Как удалить выбранный индикатор вкладки из 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.
Ответы
Ответ 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));
Дополнительная информация здесь