以下是我的Tab類。我試圖在選中和取消選中時更改選項卡的背景顏色。如果您嘗試使用自己的顏色(我已經完成)自定義選項卡,爲什麼未選定的選項卡下的邊框與選定的選項卡顏色相同?讓我給你看一張圖片:http://tinypic.com/view.php?pic=335e6ae&s=6如何更改顏色/刪除Android標籤下的標籤/ broder?
在圖片的左邊你有模擬器的真實外觀。在右邊你有我的photoshoped期望的外觀。正如你可以在模擬器中看到的,未選定標籤下的邊框仍然具有標準的灰色顏色?是否可以更改或刪除此邊框/標籤?我怎麼改變它?
目前我通過void initTabsAppearance()方法自定義我的選項卡,其中我使用選擇器在xml文件中設置背景。沒什麼特別的或fansy三色堇...
public class Tabs extends TabActivity
{
private static final String TAG = "TabHostActivity";
private boolean mHaveShownStartDialog = false;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_host);
setOnCreatePreferences();
try
{
addTab(getString(R.string.Search), R.drawable.searchtab, SearchTask.class);
addTab(getString(R.string.Bookmarks), R.drawable.favoritetab, Bookmarks.class);
addTab(getString(R.string.Latest), R.drawable.historytab, Latest.class);
addTab(getString(R.string.QAndA), R.drawable.forumtab, LatestFeedback.class);
getTabHost().setCurrentTab(0);
TabWidget widget = getTabHost().getTabWidget();
this.initTabsAppearance(widget);
}
catch(Exception e)
{
Log.e(TAG, e.getMessage());
}
}
private void addTab(CharSequence label, int drawable_id, Class<?> c)
{
TabHost.TabSpec spec = getTabHost().newTabSpec("tab" + " "+ label);
spec.setIndicator(label, getResources().getDrawable(drawable_id));
spec.setContent(new Intent().setClass(this, c));
getTabHost().addTab(spec);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.tabs_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.tabs_menu_options_item:
//startActivityForResult(new Intent(this, Options.class) , 0);
return true;
default: return super.onOptionsItemSelected(item);
}
}
private void initTabsAppearance(TabWidget tabWidget){
for(int i=0; i<tabWidget.getChildCount(); i++)
tabWidget.getChildAt(i).setBackgroundResource(R.drawable.tabcolors); //unselected
//((TextView) tabWidget.getChildAt(getTabHost().getCurrentTab())).setTextColor(0xffffffff);
//getTabHost().getTabWidget().getChildAt(getTabHost().getCurrentTab()).setBackgroundColor(Co lor.parseColor("#000000")); //selected
}
private void setOnCreatePreferences()
{
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
boolean mUseStartDialog = preferences.getBoolean("use_dialog", true);
if(mUseStartDialog)
{
if(!mHaveShownStartDialog)
{
mHaveShownStartDialog = true;
startActivity(new Intent(this, WelcomeDialog.class));
}
}
}
}
tabcolors.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@color/tabWhite"/>
<item android:state_pressed="true"
android:drawable="@color/tabBlack"/>
<item android:drawable="@color/tabBlack"/>
</selector>