[英]Android Action Bar options menu display issue
好的,所以我遇到了一個小問題,我真的不知道該如何解決。
所以我有一個應用程序,使用我自己的樣式制作動作欄
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="windowActionModeOverlay">true</item>
<item name="actionBarStyle">@style/AppTheme.ActionBar</item>
<item name="android:textColorSecondary">@color/action_bar_bg</item>
</style>
<style name="AppTheme.ActionBar" parent="Widget.AppCompat.ActionBar">
<item name="height">30dp</item>
<item name="background">@color/action_bar_bg</item>
</style>
</resources>
顯示的菜單
<?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/sortByStatus"
android:title="@string/sort_by_status"
app:showAsAction="never" />
<item android:id="@+id/sortByName"
android:title="@string/sort_by_name"
app:showAsAction="never" />
<item android:id="@+id/sortByCompany"
android:title="@string/sort_by_company"
app:showAsAction="never" />
</menu>
這幾乎適用於幾乎所有地方,除非我嘗試顯示我的選項菜單。 我已經為其添加了選項菜單和處理程序,但是當我單擊選項菜單時,默認的頂部圖標(來自通知欄)也會顯示在我的選項菜單中,並且我不希望這些圖標顯示在其中。 它還開始顯示Sony手機的默認底部導航按鈕。
從onResume啟用菜單
@Override
public void onResume() {
super.onResume();
AppCompatActivity appCompatActivity = (AppCompatActivity) getActivity();
if (appCompatActivity != null && appCompatActivity.getSupportActionBar() != null)
appCompatActivity.getSupportActionBar().setTitle(getResources().getString(R.string.presense_status));
setHasOptionsMenu(true);
((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
然后在菜單上創建
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_presense_status, menu);
}
然后是所選項目的處理程序
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
getActivity().getFragmentManager().popBackStackImmediate();
break;
case R.id.sortByStatus:
if (null != mDataSource) {
// update data list
reloadData();
}
break;
case R.id.sortByName:
if (null != mDataSource) {
// update data list
reloadData();
}
break;
case R.id.sortByCompany:
if (null != mDataSource) {
// update data list
reloadData();
}
break;
default:
super.onOptionsItemSelected(item);
}
return true;
}
我真的看不到問題的根源或解決方法,以免發生這種情況。 這發生在由我的主活動啟動的片段內,這意味着我只有一個活動會為不同的應用程序內任務生成不同的片段。 任何幫助或想法將不勝感激。
我仍然不太清楚為什么通知欄會受到我所做操作的影響,但是在此視圖中將應用程序強制為全屏顯示可以解決此問題,因此我認為這是可以接受的解決方法。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.