Android 工具栏不符合我的要求
Android toolbar not doing what I want
我的应用程序中有一个几乎全屏的对话框片段,顶部有一个工具栏。我想像 Material design guidelines:
中那样设置此工具栏的样式
工具栏XML:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="@dimen/abc_action_bar_default_height_material"
android:layout_width="match_parent"
android:title="@string/new_folder"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:background="@color/primary_dark"/>
菜单XML:
<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">
<item
android:id="@+id/action_done"
android:title="@string/action_save"
android:icon="@drawable/ic_done_white_48dp"
android:orderInCategory="100"
app:showAsAction="always|withText" />
</menu>
在我的对话框片段中,与工具栏相关的代码:
private Toolbar.OnMenuItemClickListener mMenuItemListener = new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case android.R.id.home:
dismiss();
return true;
case R.id.action_done:
dismiss();
return true;
}
return false;
}
...
mToolbar.setNavigationIcon(R.drawable.ic_close_white_48dp);
mToolbar.inflateMenu(R.menu.menu_folder);
mToolbar.setOnMenuItemClickListener(mMenuItemListener);
我的工具栏是这样的:
我有四个问题:
- 'Save' 文本没有显示在复选标记旁边,即使它有足够的空间
- X 图标太大(也许使用 36dip 版本?)
- X 图标不可点击
- 工具栏不显示标题('New Folder')
我做错了什么?
请注意,我的工具栏没有设置为操作栏!它只是一个片段中的工具栏。
- 我认为您不应该,但应该在菜单侧(工具栏右侧)添加文本。查看指南,您会发现这不是一个好的做法,所有示例都只显示带有图标的菜单
- 根据指南,我认为您应该使用 24dp('Clearance' 部分中的http://www.google.com/design/spec/style/icons.html#icons-system-icons)
使用
toolbar.setNavigationOnClickListener();
您需要将标题设置为
toolbar.setTitle("'新建文件夹")
The 'Save' text is not displayed next to the checkmark, even though
there is ample room for it
这是不可能的。您可以仅显示文本或仅显示图标。
The X icon is too large (maybe use the 36dip version?)
你应该使用 24dp 版本。
The toolbar does not display the title ('New Folder')
因为您在 Fragment 中,所以您需要将标题明确设置到工具栏中,并且从您的代码中我看不到执行此操作的源代码。您需要以编程方式进行(通过 xml 它似乎已损坏),我更喜欢您使用支持库。
The X icon is not clickable
您需要使用 OnNavigationClickListener
而不是 OnMenuClickListener
,您的 X
图标是导航图标而不是菜单图标。
我的应用程序中有一个几乎全屏的对话框片段,顶部有一个工具栏。我想像 Material design guidelines:
中那样设置此工具栏的样式工具栏XML:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="@dimen/abc_action_bar_default_height_material"
android:layout_width="match_parent"
android:title="@string/new_folder"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:background="@color/primary_dark"/>
菜单XML:
<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">
<item
android:id="@+id/action_done"
android:title="@string/action_save"
android:icon="@drawable/ic_done_white_48dp"
android:orderInCategory="100"
app:showAsAction="always|withText" />
</menu>
在我的对话框片段中,与工具栏相关的代码:
private Toolbar.OnMenuItemClickListener mMenuItemListener = new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case android.R.id.home:
dismiss();
return true;
case R.id.action_done:
dismiss();
return true;
}
return false;
}
...
mToolbar.setNavigationIcon(R.drawable.ic_close_white_48dp);
mToolbar.inflateMenu(R.menu.menu_folder);
mToolbar.setOnMenuItemClickListener(mMenuItemListener);
我的工具栏是这样的:
我有四个问题:
- 'Save' 文本没有显示在复选标记旁边,即使它有足够的空间
- X 图标太大(也许使用 36dip 版本?)
- X 图标不可点击
- 工具栏不显示标题('New Folder')
我做错了什么?
请注意,我的工具栏没有设置为操作栏!它只是一个片段中的工具栏。
- 我认为您不应该,但应该在菜单侧(工具栏右侧)添加文本。查看指南,您会发现这不是一个好的做法,所有示例都只显示带有图标的菜单
- 根据指南,我认为您应该使用 24dp('Clearance' 部分中的http://www.google.com/design/spec/style/icons.html#icons-system-icons)
使用
toolbar.setNavigationOnClickListener();
您需要将标题设置为
toolbar.setTitle("'新建文件夹")
The 'Save' text is not displayed next to the checkmark, even though there is ample room for it
这是不可能的。您可以仅显示文本或仅显示图标。
The X icon is too large (maybe use the 36dip version?)
你应该使用 24dp 版本。
The toolbar does not display the title ('New Folder')
因为您在 Fragment 中,所以您需要将标题明确设置到工具栏中,并且从您的代码中我看不到执行此操作的源代码。您需要以编程方式进行(通过 xml 它似乎已损坏),我更喜欢您使用支持库。
The X icon is not clickable
您需要使用 OnNavigationClickListener
而不是 OnMenuClickListener
,您的 X
图标是导航图标而不是菜单图标。