如何在 Android 选项卡下更改颜色/删除标签/边框?

Posted

技术标签:

【中文标题】如何在 Android 选项卡下更改颜色/删除标签/边框?【英文标题】:How to change color/remove label/border under Android-tabs? 【发布时间】:2012-09-02 01:10:14 【问题描述】:

下面是我的 Tab 类。我正在尝试在选择和取消选择时更改选项卡的背景颜色。如果您尝试使用自己的颜色自定义选项卡(我已经这样做了),为什么未选择选项卡下的边框与所选选项卡的颜色不同?给你看一张图:http://tinypic.com/view.php?pic=335e6ae&s=6

图片左侧是模拟器的真实外观。在右边,你有我的 Photoshop 想要的外观。正如您在模拟器中看到的那样,未选中选项卡下的边框仍然具有标准的灰色?是否可以更改或删除此边框/标签?怎么改呢?

目前,我通过 void initTabsAppearance() 方法自定义选项卡,在该方法中,我使用选择器在 xml 文件中设置背景。没有什么特别或迷幻的三色堇……

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>

【问题讨论】:

【参考方案1】:

它叫做tabStrip。 要删除它,您可以这样做

tabWidget.setStripEnabled(false);

可以在此处找到有关如何自定义它的文档: http://developer.android.com/reference/android/widget/TabWidget.html#attr_android:tabStripEnabled

【讨论】:

以上是关于如何在 Android 选项卡下更改颜色/删除标签/边框?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改Android中选项卡页面标题的选定和未选定颜色:Xamarin Forms

如何禁用标签栏项目以及如何更改禁用项目的颜色和透明度

选项卡颜色变化

如何更改选项标签中特定文本的颜色

如何在 Android 4.2 中更改操作栏选项菜单的背景颜色?

更改选择标签下特定选项的颜色