2012-09-07 51 views
0

我需要一些幫助來了解我失蹤或做錯了什麼。我的目標是在選中時將我的選項卡的背景色設置爲白色,未選中時將其設置爲黑色。但開始我只是試圖設置背景顏色爲紅色,作爲代碼測試:getTabHost()。getTabWidget()。getChildAt(0).setBackgroundColor(Color.parseColor(「#4E4E9C」));。我的代碼甚至在它開始之前崩潰了應用程序,原因如下:二進制XML文件行#19:您必須提供一個layout_width屬性。我無能爲力?我錯過了什麼?這與寬度屬性有什麼關係? /問候我無法設置我的標籤的背景顏色?

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.blackheart1, Bookmarks.class); 
     addTab(getString(R.string.Latest), R.drawable.clock3, Latest.class); 
     addTab(getString(R.string.QAndA), R.drawable.pen, LatestFeedback.class); 


     getTabHost().setCurrentTab(0); 
     getTabHost().getTabWidget().getChildAt(0).setBackgroundColor(Color.parseColor("#4E4E9C")); 





    } 
    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.searchtab); 
// 
//} 

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)); 
     } 
     } 
    } 

    } 

我tab_host.xml

<?xml version="1.0" encoding="utf-8"?> 
<TabHost 
android:id="@android:id/tabhost" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
> 
<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <TabWidget 
     android:id="@android:id/tabs" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
    /> 
    <FrameLayout 
     android:id="@android:id/tabcontent" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
    /> 
</LinearLayout> 
</TabHost> 

回答

0

資源在R.drawable.searchtab,是一個image'.PNG」格式,如果是,它是否有足夠的透明度.. ?

addTab(的getString(R.string.Search),R.drawable.searchtab,SearchTask.class);