Ищете универсальный стиль TabHost, который будет работать на Android, HTC Sense, Samsung и т. Д.

Стиль по умолчанию для Android TabHost отлично подходит для прямых Android-систем. Однако на HTC Sense они используют темный текст на темном фоне, который не читается.

TabHost от пользовательского интерфейса HTC Sense

Какой самый простой способ иметь TabHost, который имеет видимый текст во всех различных вариантах скинов для Android? Я бы предпочел, чтобы вам не приходилось делать совершенно индивидуальный внешний вид, если это возможно.

Мой targetSDK – 10, а мой minSDK – 7.

Solutions Collecting From Web of "Ищете универсальный стиль TabHost, который будет работать на Android, HTC Sense, Samsung и т. Д."

Я дам вам совет, чтобы получить полностью независимый от TabWidget и создать свою собственную навигацию, которую вы можете настроить, как хотите, и не беспокоиться о жесткой TabWidget. Я не собираюсь выбрасывать потрясающую TabHost, потому что легко использовать TabHost с пользовательской навигацией:

Сначала установите TabWidget как ушедший:

<TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="gone"/> 

А затем создайте свою собственную навигацию вместо нее. Вы также можете создать меню (с помощью кнопки меню аппаратного обеспечения) или что-то вроде этого:

 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="gone"/> <!-- content of your tabs--> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@id/slider_stub" android:background="@color/overview_banner_bg_down"/> <!-- custom slider with horizontal scrollable radio buttons--> <com.example.WrappingSlidingDrawer android:id="@+id/tab_slider" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:handle="@+id/tab_slider_handle" android:content="@+id/tab_scroller"> <RelativeLayout android:id="@+id/tab_slider_handle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/def_slider"> </RelativeLayout> <HorizontalScrollView android:id="@+id/tab_scroller" android:layout_width="fill_parent" android:layout_height="wrap_content" android:fadeScrollbars="false" android:scrollbarAlwaysDrawHorizontalTrack="true" android:scrollbarTrackHorizontal="@drawable/scrollbar_horizontal_track" android:scrollbarThumbHorizontal="@drawable/scrollbar_horizontal_thumb" android:fillViewport="true" android:scrollbarSize="3dip" android:fadingEdgeLength="80dp" android:background="#343534"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <RadioGroup android:id="@+id/custom_tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:gravity="center" android:orientation="horizontal" android:checkedButton="@+id/tab_overview"> <RadioButton android:id="@+id/tab_overview" android:layout_height="55dp" android:layout_width="55dp" android:button="@null" android:background="@drawable/def_checktab_overview"/> <RadioButton android:id="@+id/tab_news" android:layout_height="55dp" android:layout_width="55dp" android:button="@null" android:background="@drawable/def_checktab_news"/> .....etc....your tabs...... </RadioGroup> </RelativeLayout> </HorizontalScrollView> </com.example.WrappingSlidingDrawer> </RelativeLayout> </TabHost> 

Что вам нужно сделать в коде сейчас:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_tab_layout); setTabs(); RadioGroup tabs = (RadioGroup) findViewById(R.id.custom_tabs); tabs.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.tab_overview: getTabHost().setCurrentTab(0); break; case R.id.tab_news: getTabHost().setCurrentTab(1); break; ....etc..... } } }); } /** * Delegate tab creation and adding. */ private void setTabs() { // add the necessary tabs addTab(R.string.tab_overv_tag, OverviewActivityGroup.class); addTab(R.string.tab_news_tag, NewsActivityGroup.class); .....etc..... } /** * Create a tab with an Activity and add it to the TabHost * * @param tagId * resource id of the string representing the tag for finding the tab * @param activity * the activity to be added */ private void addTab(int tagId, Class<? extends ActivityGroup> activity) { // create an Intent to launch an Activity for the tab (to be reused) Intent intent = new Intent().setClass(this, activity); // initialize a TabSpec for each tab and add it to the TabHost TabHost.TabSpec spec = usedTabHost.newTabSpec(getString(tagId)); // use layout inflater to get a view of the tab to be added View tabIndicator = getLayoutInflater().inflate(R.layout.tab_indicator, getTabWidget(), false); spec.setIndicator(tabIndicator); spec.setContent(intent); usedTabHost.addTab(spec); } 

Весь материал индикатора не нужен. ^^ В ваших группах деятельности вы должны установить соответствующие действия и т. Д. Вы знаете материал.

Вы можете использовать что-либо для своей навигации и все еще можете использовать преимущества TabHost. Просто не беспокойтесь об этом TabWidget. 😉

После некоторых исследований я считаю, что лучшим вариантом будет использование интерфейса TabBar с вкладками, поскольку он выглядит намного проще в стиле. ActionBarSherlock обеспечивает уровень совместимости для ActionBar для устройств, начиная с Android 1.6. Здесь вы можете посмотреть примеры того, что вы можете получить с помощью библиотеки.