目前我有一个溢出菜单,其默认宽度为:
我想要的是:
我试过这样改变主题:
<style name="MyWorkspaceDetailTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:popupMenuStyle">@style/MyPopupMenu</item>
</style>
<style name="MyPopupMenu" parent="@android:style/Widget.Holo.ListPopupWindow">
<item name="android:dropDownWidth">30dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但没有取得任何成功.请任何人都可以帮忙.
android android-theme android-optionsmenu android-actionbar android-styles
这就是我在动态栏上设置Action Bar Overflow样式的方式:
<style name="DropDownNav.MyTheme" parent="@android:style/Widget.Holo.Light.Spinner">
<item name="android:popupBackground">@drawable/menu_dropdown_panel</item>
<item name="android:dropDownSelector">@drawable/selectable_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但是指定的自定义选择器不会应用于具有硬件按钮的Samsung设备上的弹出选项菜单,而是默认为蓝色.
我已经看到了这个答案,并尝试申请
<style name="ListPopupWindow.IvuTheme" parent="android:Widget.ListPopupWindow">
<item name="android:dropDownSelector">@drawable/list_selector_holo_light</item>
<item name="android:listSelector">@drawable/list_selector_holo_light</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但没有效果.
我需要继承哪种样式(以及我的主题中的相应属性)才能更改后一个硬件按钮选项菜单中的选择器?
谢谢你的建议
android android-theme android-optionsmenu android-actionbar android-styles
我需要根据API调用响应启用和禁用菜单项,并且每次菜单出现时都必须调用它.
我需要asynctask因为我必须显示进度条
@Override
public boolean onPrepareOptionsMenu (Menu menu) {
handleMenuItems(menu)
}
private void handleMenuItems(menu)
{
new AsyncTask<Void, Void, Void>(){
@Override
protected Void doInBackground(Void... params) {
//API call
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (progressDialog != null)
progressDialog.hide();
//necessary menu items are enabled and disabled
super.onPrepareOptionsMenu(menu);
}
@Override
protected void onPreExecute() {
if (progressDialog != null){
progressDialog.setMessage("Checking");
progressDialog.show();
}
super.onPreExecute();
}
}.execute();
}
Run Code Online (Sandbox Code Playgroud)
每当我触摸选项菜单时,都会调用onPrepareOptionsMenu并且不显示选项菜单,然后当我再次按下它时,不会调用onPrepareOptionsMenu并显示选项菜单.
每当我触摸选项菜单时,我希望每次都调用api并显示菜单.
android-asynctask android-optionsmenu android-fragmentactivity
我有一个带有NoActionBar主题的应用程序.在我的主要活动中,我有一个选项菜单,我在屏幕顶部手动创建(或使用内置设备的选项按钮).
在这个主要活动中,我有一个带有listView的片段,我在其中应用了动作模式长按功能,以显示上下文操作栏(CAB)以获取更多用户选项.
现在,我尝试向我的CAB添加一个选项,因此它将包含一些选项,例如选择listView中的所有项目,但由于它是CAB的一个项目,我无法像常规活动那样真正显示弹出菜单.此外,我希望所有选项菜单回调(例如onOptionsItemSelected)保留在CAB的上下文中,以便能够继续在CAB上执行操作.
这是我的CAB的代码:
<?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_delete"
android:orderInCategory="100"
app:showAsAction="always"
android:icon="@drawable/ic_action_delete"
android:title="Delete"/>
<item
android:id="@+id/action_overflow"
app:showAsAction="always"
android:orderInCategory="200"
android:icon="@drawable/ic_action_overflow"
android:title="Options"
android:visible="false"/>
</menu>
Run Code Online (Sandbox Code Playgroud) 我创建了一个选项菜单,并填充了几个菜单项.由于某种原因,添加菜单项时的顺序并不理想.
为了保证菜单项按照我们希望的顺序显示,创建后需要一个排序步骤.但是我搜索了android开发文档并发现无法做到这一点(或者我没有找到它).
有没有解决方法来实现这一目标?请指教.
谢谢!
一些示例代码:
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("menuItem1");
menu.add("menuItem2");
// after this I want to sort the items
ArrayList<MenuItem> list = new ArrayList<MenuItem>();
for(int i = 0; i < menu.size(); i ++) {
list.add(menu.getItem(i));
}
Collections.sort(list, new SampleComparator());
// But then I don't know how to add the sorted list of menu items back
}
Run Code Online (Sandbox Code Playgroud) 我最多有两个由我的活动创建的选项菜单项.根据显示的当前片段(使用选项卡控件进行更改),我显示另外一个或两个项目.
创建的所有项目应始终显示(在任何给定时间最多3个).
我的问题是关于物品的订购.我找不到任何标准.我的活动项目应该是否正确,然后将项目左侧的项目分段?或相反亦然?
谢谢
我在我的 AndroidApplication 中使用我自己的风格,但它没有让我看到菜单(3 个点)和活动标题。有什么建议吗?
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但是在我的 MainActivity 菜单没有膨胀,活动标题没有出现。
你可以在这里看到我的清单
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme.NoActionBar">
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".main.ui.MainActivity"
android:theme="@style/AppTheme.NoActionBar"/>
</application>
Run Code Online (Sandbox Code Playgroud)
和我的MainActivity.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".main.ui.MainActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/appbar_padding_top"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay">
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout> …
Run Code Online (Sandbox Code Playgroud) 我在操作栏中有一个选项菜单,它没有出现在具有硬件菜单按钮的某些设备上.尽管有硬件按钮,我必须让它出现在操作栏中......我怎么能这样做?
我的工具栏中有radibutton项目的选项菜单:
<item
android:id="@+id/map_menu"
android:icon="@drawable/ic_layer"
android:orderInCategory="102"
app:showAsAction="always"
android:title="@string/action_settings">
<menu>
<group
android:id="@+id/map_types_group"
android:checkableBehavior="single" >
<item
android:id="@+id/map_terrain"
android:orderInCategory="1"
app:showAsAction="ifRoom"
android:title="@string/map_terrain"/>
<item
android:id="@+id/map_normal"
android:orderInCategory="2"
android:checked="true"
app:showAsAction="ifRoom"
android:title="@string/map_normal"/>
<item
android:id="@+id/map_hybrid"
android:orderInCategory="3"
app:showAsAction="ifRoom"
android:title="@string/map_hybrid"/>
</group>
</menu>
</item>
Run Code Online (Sandbox Code Playgroud)
我希望在onSaveInstanceState,onRestoreInstanceState中发生方向更改时恢复选定的radiobutton但我无法理解如何从选项菜单中的radiogroup中获取所选按钮.
我一直在努力解决这个问题.我没有动作栏,但我有一个选项菜单.选项菜单是透明的我不能让它不透明.出现这个问题是因为主题:Theme.AppCompat.Light.DarkActionBar
或者Theme.AppCompact.Light.
我喜欢尝试很多东西,比如设置android:panelFullBackground
或者类似,但它们不能正常工作,或者当选项菜单出来时,它们会让我的所有屏幕都显示为黑夜.
我找到了一个有用的解决方案,我扩展ActionBarActivity
并设置主题,Theme.AppCompat.Light.NoActionBar
但当你按选项菜单按钮时,你听到按钮按两次声音.
请帮我.我想要一个xml修复或一个不同的(类似于我正在使用的)主题(也适用于标签).