如何在ActionBar中显示动作的图标和标题?

Ale*_*rov 76 android android-ui android-layout actionbarsherlock android-actionbar

我需要同时显示icontitle行动中ActionBar.

我试过" withText"选项,但它没有效果.

在此输入图像描述

Yib*_*ong 114

如果有足够的空间,' always | withText '将起作用,否则它只会放置图标.您可以通过旋转在手机上进行测试.

<item android:id="@id/menu_item"
android:title="text"
android:icon="@drawable/drawable_resource_name"
android:showAsAction="always|withText" />
Run Code Online (Sandbox Code Playgroud)

  • 即使有很多房间也行不通.图标和文字只能以横向显示. (19认同)
  • 嗨Eng.Faouad它不适合我是否有任何我们必须以编程方式做的更改? (5认同)
  • 我不会在活动和片段上与我合作 (2认同)
  • @YiboLong这个答案已弃用,因为程序通常使用appCompact库 (2认同)

Ben*_*oli 22

您可以通过两种方式创建包含文本的操作:

1-从XML:

<item android:id="@id/resource_name"
      android:title="text"
      android:icon="@drawable/drawable_resource_name"
      android:showAsAction="withText" />
Run Code Online (Sandbox Code Playgroud)

在给菜单充气时,您应该getSupportMenuInflater()在使用时打电话ActionBarSherlock.

2-编程:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuItem item = menu.add(Menu.NONE, ID, POSITION, TEXT);
    item.setIcon(R.drawable.drawable_resource_name);
    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    return true;
}
Run Code Online (Sandbox Code Playgroud)

确保你导入com.actionbarsherlock.view.Menucom.actionbarsherlock.view.MenuItem.


ebe*_*nie 17

对我有用的是使用' always | withText '.如果您有许多菜单,请考虑使用"ifRoom"而不是"always".

<item android:id="@id/resource_name"
android:title="text"
android:icon="@drawable/drawable_resource_name"
android:showAsAction="always|withText" />
Run Code Online (Sandbox Code Playgroud)


Gil*_*ker 13

我找到的解决方案是使用自定义操作布局:这是菜单的XML.

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:Eventapp="http://schemas.android.com/apk/res-auto">
<!-- This is a comment. -->
    <item
        android:id="@+id/action_create"
        android:actionLayout="@layout/action_view_details_layout"
        android:orderInCategory="50"
        android:showAsAction = "always"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

布局是

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="5dp"
    android:gravity="center"
    android:text="@string/create"/>

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:gravity="center"
    android:src="@drawable/ic_action_v"/>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这将一起显示图标和文本.

要获得clickitem片段或活动:

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
    //super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.menu_details_fragment, menu);
    View view = menu.findItem(R.id.action_create).getActionView();
    view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_SHORT).show();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)


小智 -3

按着这些次序:

  1. 在Java代码中添加Action Bar实例final ActionBar actionBar = getActionBar();
  2. 启用主显示选项 actionBar.setDisplayShowHomeEnabled(false);
  3. 在相应活动的清单文件中添加以下代码 android:logo=@drawable/logo and android:label="@string/actionbar_text"

我想这会对你有帮助