Значок вкладки Android с цветом фона - PullRequest
1 голос
/ 14 февраля 2012

Я пытаюсь сделать вкладку в Android, которая имеет значок на фоне.Но не могу установить фон вкладки.

java

intent = new Intent().setClass(this, mainActivity.class);   
spec = tabHost.newTabSpec("main").setIndicator("Main", res.getDrawable(R.drawable.ic_tab_main)).setContent(intent);   
tabHost.addTab(spec); 

xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">   
    <item android:drawable="@drawable/cameraiconblack"        
          android:state_selected="true" /> 
    <item android:drawable="@drawable/cameraiconwhite" />
</selector>

Ответы [ 2 ]

2 голосов
/ 14 февраля 2012

Укажите это

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false"     android:state_pressed="false" android:drawable="@drawable/tab_unselected" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected" />

Затем в tab_unselected.xml напишите

 <shape xmlns:android="http://schemas.android.com/apk/res/android" >
 <solid android:color="#ccc"/>


 </shape>

& для tab_selected.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#ccc"/>


</shape>

Теперь для фонового создания сделайте файл макетадля изображения и просмотра текста или чего угодно

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dip"
android:layout_height="64dip"    
android:layout_weight="1"
android:orientation="vertical"
 android:background="@drawable/tab_indicator"
android:padding="5dp">

<ImageView android:id="@+id/icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"

/>

<TextView android:id="@+id/title1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
   android:layout_centerHorizontal="true"
   android:layout_centerVertical="true"
    android:gravity="center"
    style="?android:attr/tabWidgetStyle"
/>    

Теперь измените файл основной вкладки следующим образом:

Поместите метод setTabs () в свое создание.

private void setTabs() {
    // TODO Auto-generated method stub
    tabHost = getTabHost();
    tabHost.getTabWidget().setDividerDrawable(R.drawable.line);
    intent = new Intent(this, class1.class);
    addTab(1,intent,"tab1");
    intent=new Intent(this,class2.class);
    addTab(2,intent,"tab2");
    intent=new Intent(this,class3.class);
    addTab(3,intent,"tab3");

}

Теперь метод addTab

private void addTab(int labelId, Intent intent, String tabName) {
    // TODO Auto-generated method stub
 TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);        

   View tabIndicator =LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);

    TextView title = (TextView) tabIndicator.findViewById(R.id.title1);
    title.setTextSize(40);
    title.setText(tabName);
    ImageView imageView=(ImageView)tabIndicator.findViewById(R.id.icon);
    imageView.setImageResource(R.drawable.aries);


    spec.setIndicator(tabIndicator);
    spec.setContent(intent);
    tabHost.addTab(spec);

}

Я думаю, что поставил все необходимые коды. Теперь наслаждайтесь

0 голосов
/ 14 февраля 2012
TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent; 

View view_temples = LayoutInflater.from (getBaseContext ()). Inflate (R.layout.tab_view, null);

spec = tabHost.newTabSpec ("main"). SetIndicator (view_temples.findViewById (R.id.your_image_layout_temple)) .setContent (намерение);tabHost.addTab (спецификация);

...