Для удаления серой линии внизу панели вкладок вы можете установить
tabHost.getTabWidget().setStripEnabled(false);
Начиная с удаления зазора между вкладками. Лучший способ - использовать свой собственный чертеж без каких-либо отступов. Вы можете использовать изображения для этого, или вы можете создавать фоны ваших вкладок с помощью XML, скажем, внутри корневого элемента <layer_list>
:
<layer_list>
<item android:top="0dp" android:left="0dp" android:right="0dp" android:bottom="0dp">
<shape android:shape="rectangle">
[..]
</shape>
</item>
[..]
</layer_list>
и установите его в качестве фона вашего TabWidget
.
Чтобы узнать, как настроить свои вкладки, в Интернете есть много учебных пособий. Например, этот Джош короткий и имеет хорошее объяснение.
Обновление
Здесь я поделился небольшим образцом tabwidget с использованием пользовательских вкладок (на основе вашего кода) для получения следующего результата:
Что вам нужно:
- три новых слоя рисования (для
выбранный, сфокусированный и невыбранный
состояния вкладок)
- два состояния рисования (для текста
и фон разные
государства)
- новый макет для вкладок
- обновить ваш
main.xml
- обновить класс активности
- обновите свой androidManifest.xml
(убрать декларации стиля)
Три слоя для рисования: tab_normal.xml
, tab_focused.xml
, tab_selected.xml
вытяжка / tab_normal.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/default_back_color" />
</shape>
</item>
<item android:top="2dp">
<shape android:shape="rectangle">
<gradient android:startColor="#AAAAAA" android:centerColor="#888888"
android:endColor="#666666" android:angle="90" />
<corners android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" android:topLeftRadius="10dp"
android:topRightRadius="10dp" />
</shape>
</item>
<item android:top="4dp" android:left="1dp" android:right="1dp"
android:bottom="0dp">
<shape android:shape="rectangle">
<solid android:color="@color/default_back_color" />
<corners android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
</shape>
</item>
</layer-list>
вытяжка / tab_focused.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/default_back_color" />
</shape>
</item>
<item android:top="2dp">
<shape android:shape="rectangle">
<gradient android:startColor="#AAAAAA" android:centerColor="#888888"
android:endColor="#666666" android:angle="90" />
<corners android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" android:topLeftRadius="10dp"
android:topRightRadius="10dp" />
</shape>
</item>
<item android:top="4dp" android:left="1dp" android:right="1dp"
android:bottom="0dp">
<shape android:shape="rectangle">
<gradient android:startColor="#8F8F8F" android:centerColor="#656565"
android:endColor="#3F3F3F" android:angle="90" />
<corners android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
</shape>
</item>
</layer-list>
вытяжка / tab_selected.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/default_back_color" />
</shape>
</item>
<item android:top="2dp">
<shape android:shape="rectangle">
<gradient android:startColor="#EEEEEE" android:centerColor="#CCCCCC"
android:endColor="#AAAAAA" android:angle="-90" />
<corners android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" android:topLeftRadius="10dp"
android:topRightRadius="10dp" />
</shape>
</item>
<item android:top="4dp" android:left="1dp" android:right="1dp"
android:bottom="0dp">
<shape android:shape="rectangle">
<gradient android:startColor="#EAEAEA" android:centerColor="#9F9F9F"
android:endColor="#696969" android:angle="90" />
<corners android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
</shape>
</item>
</layer-list>
Две государственные карты: tab_background_selector.xml
, tab_text_selector.xml
вытяжка / tab_background_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:state_focused="false"
android:state_pressed="false" android:drawable="@drawable/tab_selected"/>
<item android:state_selected="false" android:state_focused="false"
android:state_pressed="false" android:drawable="@drawable/tab_normal" />
<item android:state_pressed="true" android:drawable="@drawable/tab_focused"/>
<item android:state_focused="true" android:state_selected="true"
android:state_pressed="false" android:drawable="@drawable/tab_selected"/>
</selector>
вытяжка / tab_text_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="#1589FF" />
<item android:state_focused="true" android:color="#1589FF" />
<item android:state_pressed="true" android:color="@android:color/white" />
<item android:color="#F0F0F0" />
</selector>
Новый макет для вкладок: tab.xml
макет / tab.xml
<?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:background="@drawable/tab_background_selector" android:gravity="center"
android:orientation="vertical" android:padding="5dp">
<ImageView android:id="@+id/tab_icon" android:layout_width="30dp"
android:layout_height="30dp" android:scaleType="fitCenter" />
<TextView android:id="@+id/tab_text" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:singleLine="true"
android:textStyle="bold" android:gravity="center_horizontal"
android:textSize="10sp" android:padding="3dip" android:ellipsize="marquee"
android:textColor="@drawable/tab_text_selector" />
</LinearLayout>
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabHost android:id="@android:id/tabhost" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<HorizontalScrollView android:scrollbars="none"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent" android:layout_height="wrap_content" />
</HorizontalScrollView>
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="5dp" />
</LinearLayout>
</TabHost>
</LinearLayout>
InfralineTabWidget.java
public class InfralineTabWidget extends TabActivity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final TabHost tabHost = (TabHost) getTabHost();
tabHost.addTab(createTab(TopNewsActivity.class,
"topNews", "Top News", R.drawable.tab_news));
tabHost.addTab(createTab(PowerActivity.class,
"power", "Power", R.drawable.tab_power));
tabHost.addTab(createTab(EnergyActivity.class,
"energy", "Renewable Energy", R.drawable.tab_energy));
tabHost.addTab(createTab(CoalActivity.class,
"coal", "Coal", R.drawable.tab_coal));
tabHost.addTab(createTab(OilnGasActivity.class,
"oilnGas", "Oil & Gas", R.drawable.tab_oilngas));
tabHost.setCurrentTab(0);
tabHost.getTabWidget().getChildAt(0).getLayoutParams().width = 140;
tabHost.getTabWidget().getChildAt(1).getLayoutParams().width = 140;
tabHost.getTabWidget().getChildAt(2).getLayoutParams().width = 140;
tabHost.getTabWidget().getChildAt(3).getLayoutParams().width = 140;
tabHost.getTabWidget().getChildAt(4).getLayoutParams().width = 140;
}
private TabSpec createTab(final Class<?> intentClass, final String tag,
final String title, final int drawable)
{
final Intent intent = new Intent().setClass(this, intentClass);
final View tab = LayoutInflater.from(getTabHost().getContext()).
inflate(R.layout.tab, null);
((TextView)tab.findViewById(R.id.tab_text)).setText(title);
((ImageView)tab.findViewById(R.id.tab_icon)).setImageResource(drawable);
return getTabHost().newTabSpec(tag).setIndicator(tab).setContent(intent);
}
}
И это все.
Чтобы создать вкладки с прямыми углами, просто потеряйте спецификации углов из нарисованных слоев XML-файлов.
Также поиграйте с цветами, штрихами и т. Д., Чтобы результат соответствовал вашим предпочтениям.