Установка выбранной TAB с небольшим треугольником под ней

Я хочу, чтобы мои вкладки отображались как на изображении с небольшим треугольником под ним. Возможно ли это? Если да, то помогите мне с некоторыми кодами или документацией.

Изображение 1

Я думаю, что следующий подход является самым простым. Вам просто нужно настроить следующие возможности рисования (на самом деле, это вкладка Android по умолчанию для вкладок) в качестве фона вкладок:

<?xml version="1.0" encoding="utf-8"?> <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" /> <!-- Focused states --> <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_focus" /> <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_focus" /> <!-- Pressed --> <item android:state_pressed="true" android:drawable="@drawable/tab_press" /> </selector> 

Где tab_press , tab_focus и tab_selected были бы png (я бы предпочел 9-патчей ) со стрелкой вниз и прозрачной областью рядом с ней. tab_unselected не будет иметь эту стрелку, но все равно будет иметь такую ​​же прозрачную область. TabWidget только указать отрицательное нижнее поле для вашего TabWidget . Его значение определяется высотой стрелки (не забудьте использовать независимые от плотности единицы измерения):

Пояснительная схема

tab_0_info.xml:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_menu_yourImg_selected" android:state_selected="true" /> <item android:drawable="@drawable/ic_menu_yourImg" /> </selector> private void addTab(int resouceTabId, int drawableId, Class<? extends ActivityGroup> groupActivityClass) { Intent intent = new Intent(this, groupActivityClass); TabHost.TabSpec spec = tabHost.newTabSpec("tab" + resouceTabId); View tabIndicator = LayoutInflater.from(this).inflate( R.layout.tab_indicator, getTabWidget(), false); TextView title = (TextView) tabIndicator.findViewById(R.id.title); title.setText(resouceTabId); ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon); icon.setImageResource(drawableId); spec.setIndicator(tabIndicator); spec.setContent(intent); tabHost.addTab(spec); } //addTab(R.string.yourTabTitle, R.drawable.tab_0_info, YourGroup.class); 

Вы можете добавлять изображения в макет с вкладками:

 <RelativeLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="0dip" /> <FrameLayout android:fadingEdge="none" android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="0px" android:layout_below="@android:id/tabs" android:layout_alignParentBottom="true" android:padding="0px" /> <ImageView .... android:id="@+id/down_arrow_left"/> <ImageView .... android:id="@+id/down_arrow_right"/> </RelativeLayout> 

И добавьте слушателя в свою вкладку:

 getTabHost().setOnTabChangedListener(new OnTabChangeListener() { public void onTabChanged(String tabId) { if (tabId.equels("left")){ findViewById(R.id.down_arrow_left).setVisibility(View.VISIBLE); findViewById(R.id.down_arrow_right).setVisibility(View.INVISIBLE); } else if (tabId.equels("right")){ findViewById(R.id.down_arrow_left).setVisibility(View.INVISIBLE); findViewById(R.id.down_arrow_right).setVisibility(View.VISIBLE); } } });