【发布时间】:2018-02-12 10:22:52
【问题描述】:
我尝试使用actionView 设置一个MenuItem,如here 所述。
在我的例子中,ActionView 小部件是SeekBar。
问题是,当ActionView 显示在图标点击时,它的宽度比预期的要小,如下面的截图所示:
文档说:
如果小部件位于应用栏上,则应用应将小部件显示为 一个图标。如果小部件在溢出菜单中,应用程序应显示 小部件作为菜单项。 当用户与操作交互时 视图,它会展开以填满应用栏。
在我的情况下,没有任何东西得到“扩展”。它没有占据ActionBar 的整个宽度,而是很小。
为了修复它,我尝试使用另一个视图,例如 EditText,但得到了类似的结果。 (EditText 开始时很小,但在写入时会扩展)。
它似乎适用于文档中使用的android.support.v7.widget.SearchView。
我还尝试使用 Theme.AppCompat.Light.DarkActionBar 或 Theme.AppCompat.Light.NoActionBar 在布局中提供工具栏,但没有任何明显差异。
这是我使用的代码:
主活动
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* set this on other layout with toolbar in it
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
*/
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.camera_menu, menu);
return true;
}
}
app_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_item"
android:title="Action"
android:icon="@drawable/ic_icon_in_black_24dp"
app:showAsAction="ifRoom|collapseActionView"
app:actionViewClass="android.widget.SeekBar"
/>
</menu>
我也试过app:actionViewLayout=@layout/seekbar_layout 而不是actionViewClass
seekbarLayout 是这样的
<?xml version="1.0" encoding="utf-8"?>
<SeekBar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/action_seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
我还尝试了不同版本的ViewGroups,比如线性、相对或框架布局,或者尝试设置我的 SeekBar 的固定宽度但没有任何成功。
我在这里遗漏了什么或做错了什么?
【问题讨论】:
-
如果你想要一个 seekBar 作为菜单项。那么您应该将其添加为工具栏内的视图。 MenuItem 具有特定的大小。
-
你能再详细一点吗?你是什么意思“将它添加到工具栏中”?这是否意味着我必须自己处理显示/隐藏 SeekBar 并且不能使用 ActionBar/actionView 的内置机制?为什么这对文档中的
support.SearchView有效 -
SearchView也是一个菜单项。我认为当它展开时,其他视图是可见的,即搜索编辑文本。 -
SearchView扩展LinearLayout并在文档中默认使用iconified来说明问题...... developer.android.com/reference/android/widget/SearchView.html 我想这就是我需要的属性 -
已经回答here
标签: android android-layout android-actionbar