试图显示带有文本的图标android ActionBar

时间:2018-01-11 09:47:08

标签: android xml

我正在尝试在Android导航栏中显示带有搜索栏的图标,但它只是一直显示图标。这是我的xml代码

<item android:id="@+id/action_login"
        android:title="Login"
        android:icon="@android:drawable/ic_lock_lock"
        app:showAsAction="always|withText" />

这里是xml完整代码

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">


   <item android:id="@+id/action_login"
        android:title="Login"
        android:icon="@android:drawable/ic_lock_lock"
        app:showAsAction="always|withText" />
</menu>

可能出现什么问题

3 个答案:

答案 0 :(得分:0)

改变这一点 - :

android:icon="@android:drawable/ic_lock_lock"

要 - :

android:icon="@drawable/ic_lock_lock"

android:icon="@mipmap/ic_lock_lock"

答案 1 :(得分:0)

我已通过以下代码解决了这个问题:

1-在菜单文件夹中创建菜单

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".MainActivity">

<item
   android:id="@+id/action_sign"
   android:title="Sing In"
   app:showAsAction="always|withText"
   app:actionLayout="@layout/menu_sign" />

2- app:actionLayout是关键词,然后创建名为menu_sign的布局并将textView放入其中。该图标将由drawableLeft

显示
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:clickable="true"
     android:drawableLeft="@mipmap/ic_user_sign"
     android:gravity="center"
     android:orientation="vertical"
     android:text="@string/text"
     android:drawablePadding="@dimen/margin_5"
     android:paddingLeft="@dimen/margin_10"
     android:paddingRight="@dimen/margin_10"
     android:textColor="@android:color/white" />

3-添加菜单的监听器

super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_sign, menu);
signItem = menu.findItem(R.id.action_sign);
signItem.getActionView().setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        onOptionsItemSelected(signItem);
    }
});

答案 2 :(得分:0)

您的代码在Android 5.0及更高版本中正常运行。

但是在android 4.2中只显示图标,而不是文字!!

因此,如果你在5.0以下工作,那么使用actionLayout

参考这个答案: How to get text on an ActionBar Icon?

希望这会对你有所帮助