Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android操作栏中获取标签_Android_Android Actionbar - Fatal编程技术网

如何在Android操作栏中获取标签

如何在Android操作栏中获取标签,android,android-actionbar,Android,Android Actionbar,正如标题所示,我想在操作栏中添加一些文本。首先,这是一个我想象中的模型(用油漆!): 我真的很挣扎。在我的活动中,我提出: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_screen, menu); return true; } 在菜单文件夹中,我放入main_screen.xml: <?xml version="1.0" encod

正如标题所示,我想在操作栏中添加一些文本。首先,这是一个我想象中的模型(用油漆!):

我真的很挣扎。在我的活动中,我提出:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.main_screen, menu);
  return true;
}
在菜单文件夹中,我放入main_screen.xml:

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

  <item android:id="@+id/user_level"
    android:title="Administrator"
    android:showAsAction="withText" />

</menu>

所以我有两个问题:

问题1 为什么至少上面的解决方案没有显示文本
Administrator

问题2 一旦它显示文本,我如何使它看起来像一个标签(灰色背景和圆角等)


谢谢您的帮助。

问题1

您必须使用应用程序名称空间

<?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/user_level"
  android:title="Administrator"
  app:showAsAction="withText" />
</menu>

问题1

您必须使用应用程序名称空间

<?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/user_level"
  android:title="Administrator"
  app:showAsAction="withText" />
</menu>

您可以尝试在菜单项中添加以下代码:

android:showAsAction="always|withText"
android:orderInCategory="50"
50
只是一个随机数

您可以通过创建ActionBar主题样式来配置ActionBar样式和属性。
更多信息请访问:

您可以尝试在菜单项中添加以下代码:

android:showAsAction="always|withText"
android:orderInCategory="50"
50
只是一个随机数

您可以通过创建ActionBar主题样式来配置ActionBar样式和属性。
更多信息请访问:
第二个问题需要自定义菜单项

首先,您需要为菜单项创建自定义布局

cust_menu.xml

<TextView
    android:id="@+id/admin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:text="Administrator"
    android:textColor="#fff"
    android:background="@drawable/my_shape";
    android:textStyle="bold" />
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <corners android:radius="3dp" />

    <solid android:color="#e3e3e3" />

</shape>
<item
    android:id="@+id/admin"
    android:actionLayout="@layout/cust_menu"
    app:showAsAction="always">
</item>
现在您的菜单项将如下所示

main.xml

<TextView
    android:id="@+id/admin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:text="Administrator"
    android:textColor="#fff"
    android:background="@drawable/my_shape";
    android:textStyle="bold" />
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <corners android:radius="3dp" />

    <solid android:color="#e3e3e3" />

</shape>
<item
    android:id="@+id/admin"
    android:actionLayout="@layout/cust_menu"
    app:showAsAction="always">
</item>
如果有任何疑问,请告诉我

欲了解更多信息,请访问

编辑:

您可以通过这种方式访问
TextView

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.main, menu);

    View view = menu.findItem(R.id.admin).getActionView();
    TextView textView = (TextView) view.findViewById(R.id.textID);

    // do your stuff

    return super.onCreateOptionsMenu(menu);
}

快乐编码。

第二个问题需要自定义菜单项

首先,您需要为菜单项创建自定义布局

cust_menu.xml

<TextView
    android:id="@+id/admin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:text="Administrator"
    android:textColor="#fff"
    android:background="@drawable/my_shape";
    android:textStyle="bold" />
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <corners android:radius="3dp" />

    <solid android:color="#e3e3e3" />

</shape>
<item
    android:id="@+id/admin"
    android:actionLayout="@layout/cust_menu"
    app:showAsAction="always">
</item>
现在您的菜单项将如下所示

main.xml

<TextView
    android:id="@+id/admin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:text="Administrator"
    android:textColor="#fff"
    android:background="@drawable/my_shape";
    android:textStyle="bold" />
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <corners android:radius="3dp" />

    <solid android:color="#e3e3e3" />

</shape>
<item
    android:id="@+id/admin"
    android:actionLayout="@layout/cust_menu"
    app:showAsAction="always">
</item>
如果有任何疑问,请告诉我

欲了解更多信息,请访问

编辑:

您可以通过这种方式访问
TextView

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.main, menu);

    View view = menu.findItem(R.id.admin).getActionView();
    TextView textView = (TextView) view.findViewById(R.id.textID);

    // do your stuff

    return super.onCreateOptionsMenu(menu);
}

快乐编码。

在您的菜单项中尝试android:showAsAction=“always | withText”。然后尝试添加android:orderInCategory=“50”。50只是一个随机数。你是使用工具栏(新材料设计方式)还是操作栏?对于appcompat activity@Comeback4,你可以提供代码作为答案,而不是注释吗?对于工具栏示例,你可以看到这篇关于文本居中的文章。你可以很容易地把它改在右边。在菜单项中尝试android:showAsAction=“always | withText”。然后尝试添加android:orderInCategory=“50”。50只是一个随机数。你是使用工具栏(新材料设计方式)还是操作栏?对于appcompat activity@Comeback4,你可以提供代码作为答案,而不是注释吗?对于工具栏示例,你可以看到这篇关于文本居中的文章。你可以很容易地把它改在右边。您不能使用菜单。。。为什么不呢?这不是android:actionLayout的功能吗?你不能使用菜单。。。为什么不呢?这不是android:actionLayout的功能吗?这很酷,谢谢。一个问题;如何将标签的右边距设置为几像素?目前,它正对着屏幕的右边缘。这是您可以使用的自定义布局。将marging设置为textview,或将该textview包装在linearlayout或relativelayout中,并对其进行填充。我尝试将
android:layout\u marginRight=“5dp”
添加到textview中,但没有任何区别?然后尝试第二种方法。将其包装在其中一个布局中,并向其中添加
android:paddingRight
。我相信它会成功的。谢谢你——成功了。最后一个问题,当用户点击标签时,我如何使标签的背景颜色变为黑色?这很酷,谢谢。一个问题;如何将标签的右边距设置为几像素?目前,它正对着屏幕的右边缘。这是您可以使用的自定义布局。将marging设置为textview,或将该textview包装在linearlayout或relativelayout中,并对其进行填充。我尝试将
android:layout\u marginRight=“5dp”
添加到textview中,但没有任何区别?然后尝试第二种方法。将其包装在其中一个布局中,并向其中添加
android:paddingRight
。我相信它会成功的。谢谢你——成功了。最后一个问题是,当用户点击标签时,如何使其背景颜色变为黑色?