Мне нужно написать панель вкладок, где каждый из таблеток имеет вид индикатора, который содержит изменяемый числовой значок. себе вкладками для чтения новостей, где каждая вкладка имеет свой собственный Количество непрочитанныхandroid: хост вкладки, на котором у каждой вкладки есть непрочитанный значок счетчика
То, что я сделал, это создать макет XML для вкладки inidicator, накачал его в коде и ассоциировали его с TabSpec как так: tab_indicator.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:paddingLeft="10dip"
android:paddingRight="10dip">
<FrameLayout android:layout_width="wrap_content"
android:layout_height="wrap_content" android:paddingTop="5dip">
<ImageView android:src="@drawable/tab_selector_friends"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:text="2"
android:layout_width="10dip" android:layout_height="10dip"
android:textColor="@color/white_text"
android:textStyle="bold" android:typeface="monospace"
android:paddingLeft="1dip" android:paddingRight="1dip"
android:textSize="10dip" android:gravity="center" android:background="@drawable/temp_red_badge_big" />
</FrameLayout>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Friends" />
</LinearLayout>
мой виджет со вкладками (OnCreate Metod из MyTabWidget.java):
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_menu);
TabHost tabHost = getTabHost();
Intent intent = new Intent().setClass(this, TodayActivity.class);
Resources resources = this.getResources();
TabHost.TabSpec spec = tabHost.newTabSpec(resources.getString(R.string.today));
View specIndicatorView;
LayoutInflater inflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
specIndicatorView = inflater.inflate(R.layout.tab_indicator, null);
spec.setIndicator(specIndicatorView);
spec.setContent(intent);
tabHost.addTab(spec);
Есть несколько проблем с этим подходом:
- Это чрезвычайно запутанным и трудно поддерживать
- Это не дает мне гибкость я требую, т.е. изменить значение знака
- Это очень трудно спроектировать таким образом, что выглядит хорошо
- Кажется, что это слишком сложно подход
Вопрос в том, можете ли вы предложить лучший способ сделать это? есть ли другой подход, который я не рассматривал? Спасибо!