Подтвердить что ты не робот

Как удалить выбранный индикатор вкладки из TabWidget?

Вот что я хотел бы удалить:

enter image description here

Как заменить индикатор, показывающий, какая вкладка отображается в данный момент, а также синюю линию, охватывающую весь tabwidget?

Чтобы указать: все, что я хочу указать, какая вкладка выбрана, следующая:

  • tab_button_active.9.png должен отображаться как фон, если вкладка выбрана
  • tab_button_inactive.9.png следует указывать в качестве фона, если вкладка НЕ ​​выбрана.

edit: установка tabStripEnabled в false не влияет. Добавление стиля к нему и наличие "@android: style/Widget.Holo.ActionBar" в качестве родителя также невозможно, так как im target API уровня 7 и ActionBar были реализованы на уровне API 11.

4b9b3361

Ответ 1

Если android:tabStripEnabled="false" не работал, я также предполагаю, что вызов setStripEnabled(boolean stripEnabled) также не будет иметь никакого эффекта. Если все это верно, ваша проблема, вероятно, не в TabWidget.

Я бы предложил посмотреть на индикатор вкладки. Попробуйте эти изменения. Этот код берется из фрагмента с вкладками.

Вот код, который создает представление индикатора вкладки.

    View indicator = LayoutInflater.from(getActivity()).inflate(R.layout.tab,
(ViewGroup) mRoot.findViewById(android.R.id.tabs), false);

        TabSpec tabSpec = mTabHost.newTabSpec(tag);
        tabSpec.setIndicator(indicator);
        tabSpec.setContent(tabContentId);

Ваше представление индикатора вкладки, вероятно, похоже на подобное.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:background="@drawable/tabselector"
    android:padding="5dp" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/tab1icon"/>

</LinearLayout>

Теперь важной частью здесь является android:background="@drawable/tabselector" в LinearLayout. Моя выглядит так.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Non focused states -->
    <item
        android:state_focused="false"
        android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@drawable/tab_unselected_light" />
    <item
        android:state_focused="false"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@drawable/tab_selected_light" />
    <!-- Focused states -->
    <item
        android:state_focused="true"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@drawable/tab_focused_light" />
    <!-- Pressed state -->
    <item
        android:state_pressed="true"
        android:drawable="@drawable/tab_pressed_light" />
</selector>

Этот tabselector.xml - это где вы поменяете @drawable/tab_pressed_light на @drawable/tab_button_active и @drawable/tab_unselected_light на @drawable/tab_button_inactive

Обязательно убедитесь, что все ваши чертежи, которые входят в ваш tabselector.xml, не имеют синих полосок вдоль нижней части. Когда я смотрю на ваш образ, я вижу небольшие пробелы в 5 пикселей по этой полосе, и это дало мне представление о том, что полоса не была из вашего TabWidget. Надеюсь, это поможет.

Ответ 2

У меня есть еще один взлом.

    TabLayout tabLayout = (TabLayout) fragmentView.findViewById(R.id.tabs);
    tabLayout.setSelectedTabIndicatorHeight(0);

Это в основном та же идея, что и Элеоясмил.

Ответ 3

Эта строка app:tabIndicatorHeight="0dp" решает проблему для меня в xml

 <android.support.design.widget.TabLayout
        android:id="@+id/view_bottom_tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabIndicatorHeight="0dp"             //this line
        app:tabGravity="fill"
        app:tabMode="fixed" />

Ответ 4

Для TabLayout: Просто используйте app:tabIndicatorColor="@android:color/transparent"

<android.support.design.widget.TabLayout
        android:id="@+id/profile_album_tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:animateLayoutChanges="true"
        android:theme="@style/AppTheme.AppBarOverlay"
        app:tabBackground="@drawable/tab_background"
        app:tabIndicatorColor="@android:color/transparent"
        app:tabPadding="@dimen/common_margin" />

Ответ 5

Добавьте это к вашему TabLayout XML:

app:tabIndicator="@null"

Ответ 6

есть один ответ на этот вопрос вам нужно только изменить цвет индикатора на прозрачный

color.xml

 <color name="transparent2">#00000000</color>

и поместите эту строку в свой tabwidget

tabLayout.setSelectedTabIndicatorColor(getResources().getColor(R.color.transparent2));

или

app:tabIndicatorColor="@color/transparent2"

Ответ 7

Попробуйте установить высоту индикатора Tab в ноль:

tabLayout.setSelectedTabIndicatorHeight(0);

Ответ 8

Задайте атрибут android:tabStripEnabled="false" для TabWidget.

Ответ 9

Я долго искал, чтобы удалить панель меню уродливого голо все пробовал. случайно использовал этот код по другой причине, и он благодарит, что бог удалил его.

    for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {          
        tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#FF0000")); // unselected
        TextView tv = (TextView)tabhost.getTabWidget().getChildAt(i).findViewById(android.R.id.title); //Unselected Tabs
        tv.setTextColor(Color.parseColor("#ffffff"));
    }

Источник: Стиль отображения текста в стиле таможни Android

Ответ 10

Вы можете просто использовать этот метод на вкладке, чтобы скрыть индикатор вкладки.

tabLayout.setSelectedTabIndicatorColor(Color.TRANSPARENT);

Ответ 11

Используйте tabLayout.setSelectedTabIndicator(0).

tabLayout.setSelectedTabIndicatorHeight(0) теперь устарел, и tabLayout.setSelectedTabIndicatorColor(Color.TRANSPARENT) также не будет работать, поскольку использует прозрачность.

Ответ 12

Я предполагаю, что вы используете ActionBarSherlock. Проблема с использованием TabWdiget заключается в том, что он не является частью ABS, поэтому он будет выглядеть "родным" для каждой версии Android. Для меня наилучшим подходом к навигации по вкладкам с ABS является использование ViewPager и ViewPagerIndicator и стиль индикатора. Недостатком является то, что ваши вкладки должны быть фрагментами. Если вам нужны ваши вкладки для активности, тогда вы должны взглянуть, смогли ли ребятам из HoloEveryhwhere добавить TabWidget.

Ответ 13

Используйте

    tabLayout.setSelectedTabIndicator(null);

Это установит выбранный индикатор для рисования на ноль.

Ответ 14

tabHost.getTabWidget().setStripEnabled(false);
tabHost.getTabWidget().getChildAt(1).setBackgroundColor(getResources().getColor(R.color.tabcolor));
tabHost.getTabWidget().getChildAt(2).setBackgroundColor(getResources().getColor(R.color.tabcolor));

Дополнительная информация здесь