1

各タブスペックに変更可能な数字のバッジが含まれているタブバーを作成する必要があります。 tab_indicator.xml:android:各タブに未読数のバッジがあるタブホスト

は、各タブには、それは私がやったことは、タブinidicatorのXMLレイアウトを作成するコードでそれを膨らまなどのようなtabspecでそれを関連付けられている独自の未読数

のしているタブのニュースリーダーを想像します

<?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> 

私のタブのウィジェット(MyTabWidget.javaのOnCreateのmetod):

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

このアプローチにはいくつかの問題があります。

  1. 良い
  2. に見える方法でそれを設計することは非常に困難である、すなわちバッジ
  3. の値を変更し、それは私が必要な柔軟性を与えない
  4. を維持することは非常に複雑かつ困難です
  5. それはあまりにも複雑なアプローチのようです。

私の質問は、これを行うより良い方法を提案できますか?私が考慮しなかった別のアプローチがありますか? ありがとう!

答えて

0

いくつかのもの。

RelativeLayoutを使用します。これは、これらの要素がレイアウト内のどこに配置されているかをより詳細に制御できるため、問題3に役立ちます。

allまたはxml要素を含むandroid:id属性を使用する必要があります。このようにしてXMLでビューを設定できますが、プログラムで変更を加えて問題2の解決に役立てることができます。たとえば、TextViewにid属性を指定する場合は、テキスト属性をハードコードする必要はありません。

<TextView android:id="count" 
... 
/> 

し、JavaでのXMLで

、一般的に、

TextView count = (TextView) findViewById(R.id.count); 
count.setText(friendsCount); 

は、私はそれがその複雑だとは思わないが、それは確かに大幅に改善することができます。