Ищете универсальный стиль TabHost, который будет работать на скинах Android, HTC Sense, Samsung и др. - PullRequest
8 голосов
/ 27 мая 2011

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

TabHost from HTC Sense UI

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

Мой targetSDK равен 10, а мой minSDK равен 7.

Ответы [ 2 ]

4 голосов
/ 31 августа 2011

Я дам вам совет полностью освободиться от 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>

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

* * 1010

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

Вы можете использовать что угодно для навигации и при этом использовать преимущества TabHost. Только не надо больше с этим TabWidget. ;)

1 голос
/ 03 сентября 2011

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

...