如何在工具栏中的图标旁边设置一个小箭头?
How to set a little arrow next to icon in toolbar?
我想要这样的东西:link。一个小箭头和图标,但在工具栏中。
编辑:
我试过这个:
mToolbar = (CustomToolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mToolbar.setNavigationIcon(R.drawable.ic_ab_back_holo_light);
mToolbar.setTitle(mMatchName);
mToolbar.setLogo(R.mipmap.ic_options);
getSupportActionBar().setHomeButtonEnabled(true);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
overridePendingTransition(0, R.anim.slide_right);
}
});
但这使得箭头图标和Logo之间的距离很大。
问题:
如何将箭头和徽标并排放置?
您的 link 将您带到旧 ActionBar 的示例,但您似乎使用的是新工具栏。新的工具栏设计不像旧版本那样有图标,只有文本,所以额外的 space 是设计使然。如果您想使用像您 linked 那样的东西,那么您需要使用 ActionBar 而不是工具栏。
这是新工具栏上的 link:
https://blog.xamarin.com/android-tips-hello-toolbar-goodbye-action-bar/
对比旧的 ActionBar
https://developer.android.com/training/basics/actionbar/index.html
经过一些实验,我发现了如何在工具栏中实现像这样的向上导航:
我们可以创建自定义布局并将其放在工具栏中。
1) onCreate 方法中:
mToolbar = (CustomToolbar) findViewById(R.id.toolbar);
setUpCustomUpNavigation();
setSupportActionBar(mToolbar);
// to disable title in a toolbar
getSupportActionBar().setDisplayShowTitleEnabled(false);
2) setUpCustomUpNavigation() 方法。
private void setUpCustomUpNavigation() {
LayoutInflater mLayoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View customUpNavView = mLayoutInflater.inflate(R.layout.up_navigation_layout, null);
// "ic_ab_back_holo_light.png" Located in ...android-sdk\platforms\android-14\data\res\drawable-xhdpi
ImageView backArrowImageView = (ImageView) customUpNavView.findViewById(R.id.backArrowImageView);
ImageView logoToolbarImageView = (ImageView) customUpNavView.findViewById(R.id.logoToolbarImageView);
TextView titleTextView = (TextView) customUpNavView.findViewById(R.id.titleTextView);
// set logo
logoToolbarImageView.setImageResource(R.drawable.help_toolbar_ic_selector);
// set title
titleTextView.setText(R.string.title_activity_help);
mToolbar.addView(customUpNavView);
}
3) toolbar.xml
<?xml version="1.0" encoding="utf-8"?>
<net.stargorod.dating.toolbar.CustomToolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/colorPrimary"
android:minHeight="?actionBarSize"
style="@style/MyToolbar" />
4) 在style.xml中创建样式:MyToolbar。
<!-- Toolbar style -->
<style name="MyToolbar" parent="Widget.AppCompat.ActionBar">
<item name="contentInsetStart">0dp</item>
<item name="contentInsetEnd">0dp</item>
<item name="android:padding">0dp</item>
</style>
结果:
就是这样!
P.S。很抱歉我的语法错误。
我想要这样的东西:link。一个小箭头和图标,但在工具栏中。
编辑:
我试过这个:
mToolbar = (CustomToolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mToolbar.setNavigationIcon(R.drawable.ic_ab_back_holo_light);
mToolbar.setTitle(mMatchName);
mToolbar.setLogo(R.mipmap.ic_options);
getSupportActionBar().setHomeButtonEnabled(true);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
overridePendingTransition(0, R.anim.slide_right);
}
});
但这使得箭头图标和Logo之间的距离很大。
问题:
如何将箭头和徽标并排放置?
您的 link 将您带到旧 ActionBar 的示例,但您似乎使用的是新工具栏。新的工具栏设计不像旧版本那样有图标,只有文本,所以额外的 space 是设计使然。如果您想使用像您 linked 那样的东西,那么您需要使用 ActionBar 而不是工具栏。
这是新工具栏上的 link: https://blog.xamarin.com/android-tips-hello-toolbar-goodbye-action-bar/
对比旧的 ActionBar https://developer.android.com/training/basics/actionbar/index.html
经过一些实验,我发现了如何在工具栏中实现像这样的向上导航:
我们可以创建自定义布局并将其放在工具栏中。
1) onCreate 方法中:
mToolbar = (CustomToolbar) findViewById(R.id.toolbar);
setUpCustomUpNavigation();
setSupportActionBar(mToolbar);
// to disable title in a toolbar
getSupportActionBar().setDisplayShowTitleEnabled(false);
2) setUpCustomUpNavigation() 方法。
private void setUpCustomUpNavigation() {
LayoutInflater mLayoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View customUpNavView = mLayoutInflater.inflate(R.layout.up_navigation_layout, null);
// "ic_ab_back_holo_light.png" Located in ...android-sdk\platforms\android-14\data\res\drawable-xhdpi
ImageView backArrowImageView = (ImageView) customUpNavView.findViewById(R.id.backArrowImageView);
ImageView logoToolbarImageView = (ImageView) customUpNavView.findViewById(R.id.logoToolbarImageView);
TextView titleTextView = (TextView) customUpNavView.findViewById(R.id.titleTextView);
// set logo
logoToolbarImageView.setImageResource(R.drawable.help_toolbar_ic_selector);
// set title
titleTextView.setText(R.string.title_activity_help);
mToolbar.addView(customUpNavView);
}
3) toolbar.xml
<?xml version="1.0" encoding="utf-8"?>
<net.stargorod.dating.toolbar.CustomToolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/colorPrimary"
android:minHeight="?actionBarSize"
style="@style/MyToolbar" />
4) 在style.xml中创建样式:MyToolbar。
<!-- Toolbar style -->
<style name="MyToolbar" parent="Widget.AppCompat.ActionBar">
<item name="contentInsetStart">0dp</item>
<item name="contentInsetEnd">0dp</item>
<item name="android:padding">0dp</item>
</style>
结果:
就是这样!
P.S。很抱歉我的语法错误。