タブレイアウトの作成方法については、このチュートリアルに従っていました。タブの背景を変更したかったので、その方法を見つけました。問題は、選択された項目がある場合にのみ変化するタブの下に線があることです (下の画像に示すように)。
その線の色を設定する方法はありますか?
アクティビティ:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initAcitivity();
}
private void initAcitivity() {
// TODO Auto-generated method stub
Resources ressources = getResources();
final TabHost tabHost = getTabHost();
// Android tab
Intent intentHome = new Intent().setClass(this, HomeActivity.class);
TabSpec tabSpecHome = tabHost
.newTabSpec("Home")
.setIndicator("", ressources.getDrawable(R.drawable.icon_android_config))
.setContent(intentHome);
// Apple tab
Intent intentCercano = new Intent().setClass(this, CercanoActivity.class);
TabSpec tabSpecCercano = tabHost
.newTabSpec("Cercano")
.setIndicator("", ressources.getDrawable(R.drawable.icon_apple_config))
.setContent(intentCercano);
// Windows tab
Intent intentRubro = new Intent().setClass(this, RubroActivity.class);
TabSpec tabSpecRubro = tabHost
.newTabSpec("Rubro")
.setIndicator("", ressources.getDrawable(R.drawable.icon_windows_config))
.setContent(intentRubro);
// Blackberry tab
Intent intentBuscar = new Intent().setClass(this, BuscarActivity.class);
TabSpec tabSpecBuscar = tabHost
.newTabSpec("Buscar")
.setIndicator("", ressources.getDrawable(R.drawable.icon_blackberry_config))
.setContent(intentBuscar);
// add all tabs
tabHost.addTab(tabSpecHome);
tabHost.addTab(tabSpecCercano);
tabHost.addTab(tabSpecRubro);
tabHost.addTab(tabSpecBuscar);
setTabColor(tabHost);
tabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
setTabColor(tabHost);
}
});
//set Windows tab as default (zero based)
tabHost.setCurrentTab(0);
}
public void setTabColor(TabHost tabhost) {
for(int i=0;i<tabhost.getTabWidget().getChildCount();i++)
{
tabhost.getTabWidget().getChildAt(i).setBackgroundColor(this.getResources().getColor(R.color.background_barra_unselected)); //unselected
}
tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(this.getResources().getColor(R.color.background_barra_selected)); // selected
}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<TabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:id="@+id/tabHome"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:id="@+id/tabCercano"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:id="@+id/tabRubro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:id="@+id/tabBuscar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
お時間をいただきありがとうございます。
よろしくお願いします。