Android 如何创建左侧带有自定义按钮的工具栏?
我是Android开发新手,在创建自定义工具栏方面遇到了很大的问题。我的要求:Android 如何创建左侧带有自定义按钮的工具栏?,android,android-toolbar,android-appcompat,Android,Android Toolbar,Android Appcompat,我是Android开发新手,在创建自定义工具栏方面遇到了很大的问题。我的要求: 左侧的自定义按钮(图标+文本) 自定义按钮后的分隔符 按钮高度应与工具栏相同(无边距) 以下是示例图像,它解释了我的要求: 我试图使用actionBar.setCustomView(v)但它没有解决我的问题: 右按钮具有上/下边距-它们比工具栏小 我无法添加分隔符 左按钮(来自自定义视图)小于工具栏高度 我的问题是: 我真的需要自定义视图来添加左侧的自定义按钮吗 如何在左侧添加分隔符 如何使按钮高度与工具栏高度相同
actionBar.setCustomView(v)代码>但它没有解决我的问题:
右按钮具有上/下边距-它们比工具栏小
我无法添加分隔符
左按钮(来自自定义视图)小于工具栏高度
我的问题是:
我真的需要自定义视图来添加左侧的自定义按钮吗
如何在左侧添加分隔符
如何使按钮高度与工具栏高度相同
工具栏
基本上是一个框架布局
,因此您可以在布局标签中添加任何您想要的内容。在您的情况下,以下内容似乎就足够了:
layout.xml
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="?colorPrimary"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="?attr/actionBarSize"
android:divider="@drawable/divider"
android:dividerPadding="8dp"
android:orientation="horizontal"
android:showDividers="end">
<TextView
android:id="@+id/toolbar_save"
style="@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:drawableLeft="@drawable/ic_action_check"
android:drawablePadding="8dp"
android:gravity="center_vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="Save"
android:textAllCaps="true" />
</LinearLayout>
</android.support.v7.widget.Toolbar>
代码
private void setupToolbar() {
Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
// Hide the title
getSupportActionBar().setTitle(null);
// Set onClickListener to customView
TextView tvSave = (TextView) findViewById(R.id.toolbar_save);
tvSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO
}
});
}
对于右侧的项目:只需使用默认的onCreateOptions菜单
方法,并将相应的R.menu.*
资源充气即可
结果
您还需要将app:contentInsetStartWithNavigation=“0dp”添加到工具栏您是否有机会测试提供的解决方案?
private void setupToolbar() {
Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
// Hide the title
getSupportActionBar().setTitle(null);
// Set onClickListener to customView
TextView tvSave = (TextView) findViewById(R.id.toolbar_save);
tvSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO
}
});
}
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp"
/>