5

Google+ アプリでは、 の右隅の矢印の位置がActionBar Spinner、現在表示されている文字列の長さに適応します。たとえば、スピナーの長さは、知人を選んだときよりも家族を選んだときの方が短く見えます。

タイトルの長さに基づいて右隅の矢印を動的に配置するにはどうすればよいですか? 私の推測では、styles.xmlに設定できる属性があり、それを行うことができます。

ここに私のstyles.xmlがあります:

<style name="MyStyle" parent="android:style/Theme.Holo">
    <item name="android:actionDropDownStyle">@style/MyDropDownNav</item>
</style>

<style name="MyDropDownNav" parent="android:style/Widget.Holo.Spinner">
    <item name="android:AttributeHere">AttributeValue</item>
</style>

MainActivity.java にあるコードは次のとおりです。

ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

// Specify a SpinnerAdapter to populate the dropdown list.
SpinnerAdapter dataAdapter = new ArrayAdapter<String>(
        actionBar.getThemedContext(),
        android.R.layout.simple_list_item_1, android.R.id.text1,
        new String[] { "AAAAAAAAAAAAAAA", "BB" });

// Set up the dropdown list navigation in the action bar.
actionBar.setListNavigationCallbacks(dataAdapter, this);

Google+ とは異なり、右隅の矢印の位置は常に固定されています。ドロップダウンから「AAAAAAAAAAAAAAA」から「BB」を選択すると、矢印はまったく動きません。

4

1 に答える 1

1

android pureのコードを参照してくださいCalendar。そのアダプターでは、の幅が現在のアイテムと等しくなるように、getView()常に現在のアイテムを返します。実際には、の幅は常に最も長いアイテムの長さとして計算されます。ここで特別なプロセスを実行します。CalendarSpinnerSpinnerActionBarCalendar

于 2012-08-14T02:28:10.677 に答える