Як змінити тему TabHost від теми Holo.Light до Dark

Я намагався змінити тему для TabHost . До цих пір я до сих пір:

Light Tabhost Theme

Цього я досягнув, використовуючи такі xml:





    

        

            
            

            
                           
        

Мій MainActivity.java :

ContextThemeWrapper wrapper = new ContextThemeWrapper(
ActivityMain.this,
android.R.style.Theme_Holo_Light);

final LayoutInflater inflater = (LayoutInflater) wrapper
    .getSystemService(LAYOUT_INFLATER_SERVICE);                             

dialog = new Dialog(wrapper);
dialog
    .requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog
    .setContentView(R.layout.dialog_layout);

TabHost tabs = (TabHost) dialog
    .findViewById(android.R.id.tabhost);
tabs.setup();
tabs.setCurrentTab(0);

TabSpec tspec1 = tabs.newTabSpec("Tab1");
tspec1.setIndicator("SIGN UP");
tspec1.setContent(R.id.scrollView02);
tabs.addTab(tspec1);

TabSpec tspec2 = tabs.newTabSpec("Tab2");
tspec2.setIndicator("LOG IN");
tspec2.setContent(R.id.scrollView01);
tabs.addTab(tspec2);

Оскільки я використовую клас Dialog для перегляду та інтегрування TabHost у діалогове вікно, тому я використовую ContextThemeWrapper для цього в діалоговому вікні .

Now, my question is that how can I change the Holo.Light theme to Dark theme. Here is the picture what I want: Dark theme for tabhost

Я знаю, що android не має тему Holo.Dark на даний момент. Це доступно лише для ActionBars . Так як я можу досягти цього рішення.

Будь-яка допомога буде оцінена.

1

8 Відповіді

Це буде працювати:

//Changing the tabs background color and text color on the tabs
for(int i=0;i

А для індикатора, маєте макет, подібний до цього під tabwidget

 

            
            

            
            
        

І змініть колір тла індикатора, подібний до цього, на підставі вибору вкладки.

tabindicator1.setBackgroundColor(Color
                            .parseColor("#f44b3b"));
4
додано
Я б запропонував зберігати ресурси та макет коду окремо. Кольори та стиль повинні бути визначені у файлах макета для отримання чистого коду.
додано Автор Kalel Wade, джерело

Це буде працювати:

//Changing the tabs background color and text color on the tabs
for(int i=0;i

А для індикатора, маєте макет, подібний до цього під tabwidget

 

            
            

            
            
        

І змініть колір тла індикатора, подібний до цього, на підставі вибору вкладки.

tabindicator1.setBackgroundColor(Color
                            .parseColor("#f44b3b"));
4
додано
Я б запропонував зберігати ресурси та макет коду окремо. Кольори та стиль повинні бути визначені у файлах макета для отримання чистого коду.
додано Автор Kalel Wade, джерело

See the link it will helpful How to change default color to Tab Host

а також посилатися на це буде корисно

http://joshclemm.com/blog/?p=136

2
додано

See the link it will helpful How to change default color to Tab Host

а також посилатися на це буде корисно

http://joshclemm.com/blog/?p=136

2
додано

In res/values/styles.xml, change the theme parent to "android:Theme.Holo" instead of "android:Theme.Holo.Light"

Це, звичайно, змінить тему всієї програми, але ви також можете використовувати різні стилі для різних дій.

1
додано

In res/values/styles.xml, change the theme parent to "android:Theme.Holo" instead of "android:Theme.Holo.Light"

Це, звичайно, змінить тему всієї програми, але ви також можете використовувати різні стилі для різних дій.

1
додано

I would suggest using as much of android's source as possible. It really makes things cleaner in my opinion. I added a basic example of what I used below. Not perfect but closer than anything else I was able to fine and cleaner than most examples. https://github.com/android/platform_frameworks_base/tree/master/core/res/res

Наприклад, для теми holo використовуйте це. https://github.com/android/platform_frameworks_base /blob/master/core/res/res/drawable/tab_indicator_holo.xml і отримати всі ресурси і покласти їх у свій проект. Після цього скористайтеся посиланням http://joshclemm.com/blog/?p=136 і змінити його, щоб працювати так, як хочете.

Ваш файл макета









Код - такий же, як josh clemm

        mTabHost=(TabHost)getActivity().findViewById(R.id.tabHost);
    mTabHost.setup();
    //mTabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider);

    setupTab(new TextView(getActivity()), "Tab 1");
    setupTab(new TextView(getActivity()), "Tab 2");
    setupTab(new TextView(getActivity()), "Tab 3");


private void setupTab(final View view, final String tag) {
    View tabview = createTabView(mTabHost.getContext(), tag);
    TabHost.TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(new TabHost.TabContentFactory() {
        public View createTabContent(String tag) {return view;}
    });
    mTabHost.addTab(setContent);
}

private static View createTabView(final Context context, final String text) {
    View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null);
    TextView tv = (TextView) view.findViewById(R.id.tabsText);
    tv.setText(text);
    return view;
}

А потім файл tab_bg

<?xml version="1.0" encoding="utf-8"?>



1
додано

I would suggest using as much of android's source as possible. It really makes things cleaner in my opinion. I added a basic example of what I used below. Not perfect but closer than anything else I was able to fine and cleaner than most examples. https://github.com/android/platform_frameworks_base/tree/master/core/res/res

Наприклад, для теми holo використовуйте це. https://github.com/android/platform_frameworks_base /blob/master/core/res/res/drawable/tab_indicator_holo.xml і отримати всі ресурси і покласти їх у свій проект. Після цього скористайтеся посиланням http://joshclemm.com/blog/?p=136 і змінити його, щоб працювати так, як хочете.

Ваш файл макета









Код - такий же, як josh clemm

        mTabHost=(TabHost)getActivity().findViewById(R.id.tabHost);
    mTabHost.setup();
    //mTabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider);

    setupTab(new TextView(getActivity()), "Tab 1");
    setupTab(new TextView(getActivity()), "Tab 2");
    setupTab(new TextView(getActivity()), "Tab 3");


private void setupTab(final View view, final String tag) {
    View tabview = createTabView(mTabHost.getContext(), tag);
    TabHost.TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(new TabHost.TabContentFactory() {
        public View createTabContent(String tag) {return view;}
    });
    mTabHost.addTab(setContent);
}

private static View createTabView(final Context context, final String text) {
    View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null);
    TextView tv = (TextView) view.findViewById(R.id.tabsText);
    tv.setText(text);
    return view;
}

А потім файл tab_bg

<?xml version="1.0" encoding="utf-8"?>



1
додано
android_jobs_ua
android_jobs_ua
120 учасників

Публикуем вакансии и запросы на поиск работы по направлению Android. Здесь всё: full-time, part-time, remote и разовые подработки.

Mobile Dev Jobs UA
Mobile Dev Jobs UA
20 учасників

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin, RN и т.д.