根据显示的标题的长度动态定位动作条微调的右上角箭头(Dynamically position rig

2019-07-30 21:20发布

在Google+应用中,所述的右角的箭头的位置ActionBar Spinner适应当前字符串表示的长度。 例如,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”选择,箭头不动的。

Answer 1:

请参考Android的纯的代码Calendar ,它的适配器, getView()总是返回当前项目Calendar ,以便宽度Spinner等于当前的项目。 实际上, Spinner宽度ActionBar总是计算其最长项的长度。 Calendar做了一些特殊的工艺在这里。



文章来源: Dynamically position right corner arrow of the ActionBar Spinner based on length of displayed title