android - 如何在操作栏上添加自定义按钮?

标签 android

我想制作一个操作栏,右边有一个按钮,带有 margin_right。像这样 picture1 我使用 Action 按钮来做到这一点。但是按钮在右边,没有margin_right。 picture2 android:layout_marginRight 在这里不起作用。

这是我的 styles.xml:

<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    <item name="android:actionBarSize">50dp</item>
    <item name="android:actionBarStyle">@style/my_actionbar_style</item>
    <item name="android:actionButtonStyle">@style/my_action_button</item>

</style>
<style name="my_actionbar_style" parent="android:Widget.ActionBar">
    <item name="android:background">@color/actionbar_backgroud</item>
    <item name="android:titleTextStyle">@style/myTitleStyle</item>
    <item name="android:displayOptions">showTitle</item>
</style>
<style name="myTitleStyle">
    <item name="android:textColor">#ffffff</item>
    <item name="android:textSize">20sp</item>
</style>

<style name="my_action_button">
    <item name="android:background">@drawable/button_selector</item>
    <item name="android:width">70dp</item>
    <item name="android:textSize">13sp</item>
    <item name="android:layout_marginTop">10dp</item>
    <item name="android:layout_marginBottom">10dp</item>
    <item name="android:layout_marginRight">10dp</item>
</style>

这是我的 menu.xml:

<menu xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
tools:ignore="AppCompatResource">

<item
    android:id="@+id/action_search"
    android:title="submit"
    android:showAsAction="always" /></menu>

最佳答案

另一种快速简洁的方法是为该菜单按钮指定您自己的布局。像这样

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

    <item
        android:id="@+id/action_custom_button"
        android:title="Custom Button"
        android:icon="@drawable/ic_custom_button"
        app:actionLayout="@layout/layout_to_custom_button"
        app:showAsAction="always" />

</menu>

应该有

layout_to_custom_button.xml

包含您想要的内边距和样式的布局文件。

并在点击事件的 Activity 中执行此操作

@Override
public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.menu_product_detail, menu);
  final Menu mMenu = menu;
  final MenuItem item = menu.findItem(R.id.action_custom_button);
  item.getActionView().setOnClickListener(new View.OnClickListener(){

    @Override
    public void onClick(View v) {
      mMenu.performIdentifierAction(item.getItemId(), 0);
    }
   });
        return true;
}

关于android - 如何在操作栏上添加自定义按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32175254/

相关文章:

Android ListView addHeaderView() nullPointerException 用于 XML 中定义的预定义 View

android - 输入表单控件在 android 中不接受 0

android - 为什么我的 Flutter 应用的 ListView 滚动不如 Flutter Gallery 应用流畅?

java - Firebase 实时数据库通常是如何收费的?

java - Maven-publish 不能在 pom 文件上应用 withXML(没有方法签名)

java - 在项目点击时发送字符串

java - 图形布局和运行时的奇怪问题

Android 权限是可选的还是强制的?

android - 重新安装后 facebook 哈希错误

java - 如何从另一个类(class)的 Activity/类(class)中获取 View ?