Android: текстовый индикатор с закругленными краями не появляется - PullRequest
0 голосов
/ 21 декабря 2011

Я хочу иметь вкладки с закругленным краем и с определенным цветом фона.

Пожалуйста, смотрите мой код здесь.При этом я получаю вкладку, правильную форму и цвет, но на вкладках нет текстового индикатора. Помогите решить эту проблему

private void setViewContent() {
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.events_tabs);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.customtitle);
    tabHost = getTabHost();


     TabHost.TabSpec spec;  // Resusable TabSpec for each tab

        Intent intent;  // Reusable Intent for each tab
        // Create an Intent to launch an Activity for the tab (to be reused)
        intent = new Intent().setClass(this, EventsListActivity.class);
        intent.putExtra("PASTEVENT", 0);
        // Initialize a TabSpec for each tab and add it to the TabHost
        spec = tabHost.newTabSpec("UpcomingEvents").setIndicator("UpcomingEvents").setContent(intent);
        tabHost.addTab(spec);

        // Do the same for the other tabs
        intent = new Intent().setClass(this,EventsListActivity.class);
        intent.putExtra("PASTEVENT", 1);
        spec = tabHost.newTabSpec("PastEvents").setIndicator("PastEvents"
                         )
                      .setContent(intent);

        tabHost.addTab(spec);

        tabHost.setCurrentTab(0);

    tabHost.setOnTabChangedListener(this);

    setTabColor(tabHost);

}

public static void setTabColor(TabHost tabhost) {
    for (int i = 0; i < tabhost.getTabWidget().getChildCount(); i++) {

    //tabhost.getTabWidget().getChildAt(i)
    //          .setBackgroundColor(Color.parseColor("#ff0000")); 

         tabhost.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.tab_notpressed_bg);

    }
     tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundResource(R.drawable.tab_pressed_bg);
//  tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab())
    //      .setBackgroundColor(Color.parseColor("#C11B17")); // selected

}



public void onTabChanged(String tabName) {

    setTabColor(tabHost);

}

event_tab.xml:

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:paddingTop="10dip" >
<LinearLayout android:orientation="vertical"
    android:layout_width="fill_parent" android:layout_height="fill_parent">
    <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent"
    >
    <TabWidget android:id="@android:id/tabs" 
                android:layout_width="wrap_content" android:layout_height="40dip" 
        android:layout_below="@+id/text1view" android:layout_margin="15dip"
        android:layout_centerHorizontal="true"/>            
        <FrameLayout android:id="@android:id/tabcontent" 
                android:layout_width="fill_parent" android:layout_height="fill_parent"
                android:layout_below="@android:id/tabs"/>



    </RelativeLayout>
</LinearLayout>

tab_pressed_bg.xml

    <?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
     <gradient android:startColor="#C11B17" android:endColor="#C11B17" 
            android:angle="270"/> 

    <corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp" 
     android:topLeftRadius="7dp" android:topRightRadius="7dp"/> 
</shape> 

tab_not_pressed_bg

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
     <gradient android:startColor="#ff0000" android:endColor="#ff0000" 
            android:angle="270"/> 

    <corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp" 
     android:topLeftRadius="7dp" android:topRightRadius="7dp"/> 

</shape> 

1 Ответ

0 голосов
/ 21 декабря 2011

Это была простая ошибка, мне пришлось изменить высоту tabwidget !!

<TabWidget android:id="@android:id/tabs" 
                android:layout_width="wrap_content" android:layout_height="40dip" 
        android:layout_below="@+id/text1view" android:layout_margin="15dip"
        android:layout_centerHorizontal="true"/>    

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

tabStripEnabled для TabWidget в более старых API

...