Можно ли изменить цвет фона TabHost / Widget?или хотя бы фон приложения - PullRequest
0 голосов
/ 12 декабря 2011

Я создаю несколько пользовательских вкладок для своего приложения для Android, однако дизайнер разработал вкладки с небольшими изгибами вверху.Таким образом, между этими кривыми должен быть «прозрачный» цвет.

Создание кривых было несложным, но проблема в том, что вместо прозрачного фона у хоста вкладок, очевидно, есть цвет фона темы (в моем случаеБелый).

Я не думаю, что можно сделать прозрачный фоновый цвет, так как содержимое экрана выше (в моем случае) вкладок.Вторая альтернатива - «переместить» содержимое вкладок на несколько пикселей в верхнюю часть tabWidget, но это также не представляется возможным.В качестве последнего варианта было бы неплохо, чтобы цвет фона приложения соответствовал цвету фона приложения по умолчанию или использовался в качестве фона для рисования.

Если что-то из этого возможно?худший сценарий - просто поместить этот цвет фона на каждую вкладку;просто интересно.

Спасибо!

1 Ответ

1 голос
/ 12 декабря 2011

Здравствуйте, надеюсь, это вам поможет.

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tab);

    host = getTabHost();

        host.addTab(host.newTabSpec(Constants.TAG_TAB1).setIndicator(Constants.TAG_TAB1,getResources().getDrawable(R.drawable.img1)).setContent(new Intent(this, Activity1.class)));
    host.addTab(host.newTabSpec(Constants.TAG_TAB2).setIndicator(Constants.TAG_TAB2,getResources().getDrawable(R.drawable.img2)).setContent(new Intent(this, Activity2.class);
    host.addTab(host.newTabSpec(Constants.TAG_TAB3).setIndicator(Constants.TAG_TAB3,getResources().getDrawable(R.drawable.img3)).setContent(new Intent(this, Activity3.class)));
    host.addTab(host.newTabSpec(Constants.TAG_TAB4).setIndicator(Constants.TAG_TAB4,getResources().getDrawable(R.drawable.img4)).setContent(new Intent(this, Activity4.class)));

        host.setCurrentTab(0);


        for(int i=0;i<host.getTabWidget().getChildCount();i++)
        {
            host.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.tab_bg);
        }
        host.getTabWidget().getChildAt(host.getCurrentTab()).setBackgroundResource(android.R.color.transparent);// selected

    host.setOnTabChangedListener(this);
}


    @Override
    public void onTabChanged(String tabId) 
    {

        for(int i=0;i<host.getTabWidget().getChildCount();i++)
        {
            host.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.tab_bg);
    }
        host.getTabWidget().getChildAt(host.getCurrentTab()).setBackgroundResource(android.R.color.transparent);// selected

    }
...