5

在 Google+ 应用程序中,右上角箭头的位置会ActionBar Spinner适应当前显示的字符串的长度。例如,选择Family时 Spinner 的长度似乎比选择 Acquaintances 时

我该怎么做才能让右角箭头根据标题的长度动态定位?我的猜测是我可以在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()总是返回当前项,Calendar使得 的宽度Spinner等于当前项。实际上,Spinner宽度ActionBar总是计算为其最长项目的长度。Calendar在这里做了一些特殊的过程。

于 2012-08-14T02:28:10.677 回答