簡體   English   中英

如何在Android標簽下更改顏色/刪除標簽/邊框?

[英]How to change color/remove label/border under Android-tabs?

下面是我的Tab類。 我正在嘗試選擇和取消選擇時更改選項卡的背景顏色。 如果您嘗試使用自己的顏色自定義選項卡(我已經這樣做了),為什么未選中的選項卡下的邊框與選中的選項卡沒有相同的顏色? 讓我給你看一張圖片: http : //tinypic.com/view.php?pic=335e6ae&s=6

在圖片的左側,您可以看到仿真器的真實外觀。 在右邊,您有我需要的photoshop外觀。 如您在模擬器中看到的,unselected選項卡下的邊框仍然具有標准的灰色? 是否可以更改或刪除此邊框/標簽? 我該如何改變呢?

目前,我通過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>

它稱為tabStrip。 要刪除它,你可以做

tabWidget.setStripEnabled(false);

有關如何自定義它的文檔,可以在以下位置找到: http : //developer.android.com/reference/android/widget/TabWidget.html#attr_android : tabStripEnabled

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM