Изменить цвет фона вкладки и удалить разделительную линию между вкладками - PullRequest
12 голосов
/ 01 июня 2011

Я хочу показать вкладки в моем приложении, но по умолчанию в Android между вкладками есть разделительная линия, как эта

                            Tab1 | Tab2 | Tab3 |

Но я хочу показать такие вкладки

                            Tab1 Tab2 Tab3

Поэтому я хочу удалить разделительную линию между двумя вкладками, а также по умолчанию цвет фона вкладок серый. поэтому я хочу изменить это на черный цвет.

Расскажите, пожалуйста, как убрать разделительную линию между двумя вкладками и изменить цвет фона вкладок.

Заранее спасибо.

С наилучшими пожеланиями.

Ответы [ 3 ]

61 голосов
/ 05 ноября 2012

Используйте:

tabHost.getTabWidget().setDividerDrawable(null);

для удаления разделительных линий.

24 голосов
/ 31 января 2013

У меня была проблема в ICS, где был виден разделитель.Ни одно из решений не сработало, за исключением следующего.

<TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:gravity="bottom"
            android:layout_alignParentBottom="true"
            android:fadingEdge="none"
            android:showDividers="none" >
        </TabWidget>

Ключевая строка была android:showDividers="none"

10 голосов
/ 01 июня 2011

Используйте этот метод и макет, чтобы использовать свой собственный макет для вкладки.Чтобы удалить разделитель, просто замените фоновый рисунок 9patch своим собственным.

public static View prepareTabView(Context context, String text, Drawable background) {
    View view = LayoutInflater.from(context).inflate(R.layout.fake_native_tab, null);
    TextView tv = (TextView) view.findViewById(R.id.fakeNativeTabTextView);
    tv.setText(text);
    view.setBackgroundDrawable(background);
    return view;
}

fake_native_tab.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fakeNativeTabLayout" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:gravity="center"
android:orientation="vertical" android:background="@drawable/default_tab_background">
<!--
       You can even define an Icon here (dont forget to set a custom icon in your code for each Tab):
    <ImageView android:id="@+id/fakeNativeTabImageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:src="@drawable/icon" />
-->
    <TextView android:id="@+id/fakeNativeTabTextView"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:textColor="@color/tab_text_color" android:textSize="@dimen/text_size_tiny"
    android:text="Tab" android:ellipsize="marquee" />

</LinearLayout>

Использование (внутри вашего TabActivity):

/* Create Tabs */
// reusable Tab Spec
TabHost.TabSpec spec;
Intent tabIntent;
tabHost = getTabHost();
Resources res = getResources();

// Tab 1:
tabIntent = new Intent().setClass(this, Favorite.class);
    spec = tabHost.newTabSpec(TAB_SOMETAB).setIndicator(
            prepareTabView(this, (String) getText(R.string.tab_favorite), res
                    .getDrawable(R.drawable.tab_favorite_background), 0)).setContent(tabIntent);
tabHost.addTab(spec);



// Tab 2:
tabIntent = new Intent().setClass(this, History.class);
spec = tabHost.newTabSpec(TAB_SOMEOTHERTAB).setIndicator(
            prepareTabView(this, (String) getText(R.string.tab_history), res
                    .getDrawable(R.drawable.tab_favorite_background), 0)).setContent(tabIntent);
tabHost.addTab(spec);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...