在 Android 中的 ActionBar 左侧放置两个按钮

Put two buttons on left side of ActionBar in Android

我正在尝试构建一个 ActionBar,左侧有两个图标,其余图标位于右侧。这两个项目将是一个徽标,单击它会将用户重定向到主页,以及一个后退按钮,单击它会将用户重定向到“Page Up”。 Logo应该出现在最左边,后面应该出现默认的后退箭头。

目前,我已经实现了“Page Up”功能(使用默认的后退箭头),项目出现在左侧,但我也没有成功将徽标放在那里。

这是我到目前为止所拥有的(代码已简化以专注于对问题重要的内容):

layout_action_bar.xml:

<!-- Custom layout for the action bar, so that we are able to center the text in it -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingRight="@dimen/action_bar_text_padding_right"
        android:id="@+id/txt_action_bar_title"
        android:singleLine="true"
        android:ellipsize="end"
        style="@style/Widget.ActionBar.Text"/>

</LinearLayout>

menu_base.xml(不需要,只是为了说明我在 ActionBar 右侧的内容):

<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=".BaseActivity">

     <item
        android:id="@+id/action_menu"
        android:icon="@drawable/ic_menu"
        android:orderInCategory="1"
        android:title="@string/menu_drawer_open_accessibility"
        app:showAsAction="always"/>

     <item android:id="@+id/search"
          android:title="@string/actionbar_search_button_tooltip"
          android:icon="@drawable/ic_navigation_search"
          app:showAsAction="always|collapseActionView"
          app:actionViewClass="androidx.appcompat.widget.SearchView"
        />

</menu>

menu_base 在 CreateOptionsMenu() 上膨胀并且在 ActionBar 的那一侧一切正常。

BaseActivityMenu.java:

protected final void createMenu(CharSequence actionBarText) {
        
     ActionBar actionBar = getSupportActionBar();
     if(actionBar != null) {
          actionBar.setCustomView(R.layout.layout_action_bar);
          TextView title = actionBar.getCustomView().findViewById(R.id.txt_action_bar_title);
          title.setText(actionBarText);

          actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
          actionBar.setDisplayHomeAsUpEnabled(true);
          actionBar.setHomeButtonEnabled(false);
     }
}

在视觉上,这是我目前拥有的:My ActionBar

我怎样才能做到这一点?

在您的 layout_action_bar.xml 中,在 LinearLayout 中添加以下代码:

<ImageButton
    android:id="@+id/homeBtn"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:background="@android:color/transparent"
    android:src="@drawable/ic_home"/>

<ImageButton
    android:id="@+id/topBtn"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:background="@android:color/transparent"
    android:src="@drawable/ic_back_up"/>

然后在您的 activity 中添加以下代码行:

ImageButton toHome = actionBar.findViewById(R.id.homeBtn);
ImageButton toTop = actionBar.findViewById(R.id.topBtn);
toHome.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        //do what you want here
    }
});
toTop.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        //do what you want here
    }
});