私は次の設定をしています:
<Android.support.design.widget.NavigationView
style="@style/NavigationView"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="start"
app:itemTextAppearance="@style/DrawerTextAppearance"
app:menu="@menu/drawer"/>
menu/drawer.xml
<menu>
<item
Android:id="@+id/messages_item"
Android:icon="@drawable/ic_notifications_neg"
app:actionLayout="@layout/counter"
Android:title="@string/message_center"/>
<item
Android:id="@+id/search_item"
Android:icon="@drawable/ic_search_neg"
Android:title="@string/search"/>
</menu>
layout/counter.xml
<TextView
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="26dp"
Android:layout_height="26dp"
Android:text="55"
style="@style/Bubble"/>
スタイル:
<style name="Bubble" parent="Android:Widget.TextView">
<item name="Android:gravity">center</item>
<item name="Android:layout_gravity">center_vertical</item>
<item name="Android:textColor">@Android:color/white</item>
<item name="Android:background">@drawable/bubble</item>
</style>
これにより、次の結果が生成されます。
スタイルの重力設定にもかかわらず、バブルが上部に表示されます。
ActionLayoutをメニュー項目の中央に配置するにはどうすればよいですか?
私は偶然に問題を解決することができた。
TextViewをコンテナ内に配置する必要がありました。
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:gravity="center"
Android:orientation="horizontal">
<TextView
Android:id="@+id/counterView"
style="@style/Bubble"
Android:layout_width="26dp"
Android:layout_height="26dp"
Android:text="55"/>
</LinearLayout>
これで、メニュー項目の真ん中にカウンターが表示されます!
[〜#〜]更新[〜#〜]
カウンター変更コード:
TextView view = (TextView) drawer.getMenu().findItem(R.id.counter_item).getActionView().findViewById(R.id.counterView);
view.setText("" + count);