在 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
}
});
我正在尝试构建一个 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
}
});