我可以在ActionBar中存储最多数量的图标吗?

时间:2013-01-24 15:10:15

标签: android android-actionbar actionbarsherlock

我目前在操作栏中有4个操作,它会切断屏幕标题。我知道我可以使用android:uiOptions="splitActionBarWhenNarrow"添加一个底栏,但我想知道我是否可以让Action图标更小?我也知道我可以使用ActionOverflow选项,但如果可能的话,我试图避免它。如果没有,我可以在底部保留最大数字,并且顶部有最大数字吗?

编辑

此外,还有像setTitleTextSize()之类的电话吗?也许如果我可以让我的标题更小,它会起作用,但我在APIs中找不到任何内容。

1 个答案:

答案 0 :(得分:1)

没有Google批准的方法可以执行此操作,但这种轻微的黑客攻击应该有效。

try {
    final int titleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");
    TextView title = (TextView) getWindow().findViewById(titleId);
    // check for null and manipulate the title as you see fit
} catch (Exception e) {
    Log.e(TAG, "Failed to obtain action bar title reference");
}

但是,Google Approved的一种方法是将自定义布局设置为ActionBar:

您可以为操作栏使用自定义视图(它将显示在您的图标和操作项之间)。我正在使用自定义视图,我禁用了本机标题。我的所有活动都从一个活动继承,该活动的代码在onCreate:

this.getActionBar().setDisplayShowCustomEnabled(true);
this.getActionBar().setDisplayShowTitleEnabled(false);

LayoutInflater inflator = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflator.inflate(R.layout.titleview, null);

//if you need to customize anything else about the text, do it here.
//I'm using a custom TextView with a custom font in my layout xml so all I need to do is set title
((TextView)v.findViewById(R.id.title)).setText(this.getTitle());

//assign the view to the actionbar
this.getActionBar().setCustomView(v);

你的布局xml(上面代码中的R.layout.titleview)应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent" >

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:textSize="20dp"
        android:maxLines="1"
        android:ellipsize="end"
        android:text="" />
</RelativeLayout>

更改android:textSize="20dp"以更改标题的大小。