Mat*_*men 90 android overflow android-actionbar
我的应用中有一个带有3个项目的操作栏.
由于空间问题,只能显示2个,所以我希望第一个显示,其余的显示在溢出中.但实际上只显示前两项,并且没有可检测到的溢出.
以下是相关代码:list_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/menu_insert"
android:icon="@android:drawable/ic_menu_add"
android:title="@string/menu_insert"
android:showAsAction="ifRoom|withText"/>
<item android:id="@+id/menu_call"
android:icon="@android:drawable/ic_menu_call"
android:title="@string/menu_call"
android:showAsAction="ifRoom|withText"/>
<item android:id="@+id/menu_agenda"
android:icon="@android:drawable/ic_menu_agenda"
android:title="@string/menu_agenda"
android:showAsAction="ifRoom|withText"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
Activity.java
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater mi = getMenuInflater();
mi.inflate(R.menu.list_menu, menu);
return true;
}
Run Code Online (Sandbox Code Playgroud)
Atu*_*hik 125
如果要显示三个点,无论设备菜单按钮如何!然后你可以在你的应用程序类'onCreate方法中调用这个方法 -
private void makeActionOverflowMenuShown() {
//devices with hardware menu button (e.g. Samsung Note) don't show action overflow menu
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
Log.d(TAG, e.getLocalizedMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
Kir*_*ela 54
RES /菜单/ menu.xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search / will display always -->
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:showAsAction="always"
android:title="@string/action_search"/>
<!-- Location Found -->
<item
android:id="@+id/action_location_found"
android:icon="@drawable/ic_action_location_found"
android:showAsAction="always"
android:title="@string/action_location_found"/>
<!-- More -->
<item
android:id="@+id/a_More"
android:icon="@drawable/ic_action_overflow"
android:showAsAction="always"
android:title="More">
<menu>
<!-- Refresh -->
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_refresh"
android:showAsAction="never"
android:title="@string/action_refresh"/>
<!-- Help -->
<item
android:id="@+id/action_help"
android:icon="@drawable/ic_action_help"
android:showAsAction="never"
android:title="@string/action_help"/>
<!-- Check updates -->
<item
android:id="@+id/action_check_updates"
android:icon="@drawable/ic_action_refresh"
android:showAsAction="never"
android:title="@string/action_check_updates"/>
</menu>
</item>
</menu>
Run Code Online (Sandbox Code Playgroud)
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
}
Run Code Online (Sandbox Code Playgroud)
下载操作栏图标集
Lev*_*8er 42
我意识到这不是溢出菜单,但它是类似的.好的,这很简单,但很难弄明白.
首先需要一个要用作溢出inflater的菜单项.例
<item
android:id="@+id/a_More"
android:icon="@drawable/more"
android:showAsAction="always"
android:title="More">
</item>
Run Code Online (Sandbox Code Playgroud)
获得项目后,在溢出菜单中添加包含所需项目的子菜单.例:
<item
android:id="@+id/a_More"
android:icon="@drawable/more"
android:showAsAction="always"
android:title="More">
<menu>
<item
android:id="@+id/aM_Home"
android:icon="@drawable/home"
android:title="Home"/>
</menu>
</item>
Run Code Online (Sandbox Code Playgroud)
点击这将膨胀其他项目.我的应用程序正在使用ActionBarSherlock 4.0,因此在此之前,您将需要访问"SplitActionBar".(仍将在默认的android Actionbar上工作)
方法如下:在AndroidManifest.xml文件中,您需要在需要溢出菜单的活动下添加此代码.
android:uiOptions="splitActionBarWhenNarrow"
Run Code Online (Sandbox Code Playgroud)
注意:您的溢出菜单膨胀的项目必须showAsAction="always"
Vwola!你有一个溢出菜单!希望我能帮助你.:)
Luk*_*eau 26
在具有硬件菜单按钮的设备(Galaxy S3,三星顽固......)上,溢出菜单表现为"传统"菜单,使用硬件菜单按钮.
当你说"溢出"菜单时,你的意思是最后显示的三个点表示还有更多的项目......或者你的意思是底部出现溢出项目的分割操作栏?
如果您的意思是拆分操作栏,则应将其添加到活动的清单文件中
android:uiOptions="splitActionBarWhenNarrow"
Run Code Online (Sandbox Code Playgroud)
默认情况下,三个点溢出菜单应该自动发生,因此很难从上面提供的信息中分辨出问题所在.
总是在actionbarcompat上显示动作溢出(三点):
在菜单文件中,例如:
main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_settings"
android:title="@string/action_settings"
app:showAsAction="never"/>
<item
android:id="@+id/action_about"
android:title="@string/action_about"
app:showAsAction="never"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
并在活动文件中:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
它对我来说很好.
在三星S3的谷歌Nexus S上测试过.
归档时间: |
|
查看次数: |
79655 次 |
最近记录: |