我需要缩小每个菜单项的结尾。如何将menuItem中的textView定位到setEllipsize
SubMenu sm = menuItem.getSubMenu();
for (int i = 0; i < sm.size(); i++) {
MenuItem mi = sm.getItem(i);
}
答案 0 :(得分:0)
如果从XML定义MenuItem
,您可以使用android:actionLayout
更改MenuItem的布局。所以你有:
<item android:id="@+id/button_id"
android:icon="@drawable/icon"
android:showAsAction="always"
android:actionLayout="@layout/action_button"
android:title="@string/text"/>
然后在 layout / action_button 中,您可以:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:ellipsize="end"
...
whatever other styles you need to set
...
/>
请记住,如果你这样做,可能需要自己触发onOptionsItemSelected(例如,如果您正在使用ActionBarSherlock)。要做到这一点,请执行以下操作:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// inflate your menu
...
// Get the MenuItem of interest
final MenuItem item = menu.findItem(R.id.button_id);
item.getActionView().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
onOptionsItemSelected(item);
}
});
}
答案 1 :(得分:0)
请阅读以下链接,其中包含有关何时省略MenuItem标题的重要信息:
When to use ellipsis after menu items
不幸的是,我没有像TextView方法setEllipsize()那样找到ellpsize MenuItem标题的选项,但是如果它真的是你必须做的事情,你可以轻松解决它:
SubMenu sm = menuItem.getSubMenu();
String title = "";
for (int i = 0; i < sm.size(); i++) {
MenuItem mi = sm.getItem(i);
title = mi.getTitle().toString();
if (title.length() > 10) {
String truncated = title.subSequence(0, title.length() - 3).toString().concat("...");
mi.setTitle(truncated);
}
}