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

Yri*_*uns 6 android

我想用右边的按钮创建一个带有margin_right的操作栏.像这样 图片1 我使用动作按钮来完成它.但按钮在右边没有margin_right. 图片2 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>
Run Code Online (Sandbox Code Playgroud)

这是我的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>
Run Code Online (Sandbox Code Playgroud)

Kev*_*ine 5

另一种快速而干净的方法是为该菜单按钮指定您自己的布局。像这样的东西

<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>
Run Code Online (Sandbox Code Playgroud)

应该有

layout_to_custom_button.xml

布局文件,其中包含您想要的填充和样式。

并在您的活动中为点击事件执行此操作

@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;
}
Run Code Online (Sandbox Code Playgroud)