启用 FLAG_LAYOUT_NO_LIMITS 时选项子菜单不在屏幕上
Options sub-menu goes off-screen when enabling FLAG_LAYOUT_NO_LIMITS
我正在设置 WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
标志以使状态栏与 ActionBar
重叠,并且我有一个带有子菜单的选项菜单。当我点击子菜单时出现问题-菜单项,然后它显示在屏幕外(几乎看不到它的左边缘)。
当我删除下面的标志时,子菜单正常显示。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
这是菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:title="Items"
app:showAsAction="never">
<menu>
<item
android:id="@+id/item2"
android:title="item 2"
app:showAsAction="never" />
<item
android:id="@+id/item3"
android:title="item 3"
app:showAsAction="never" />
</menu>
</item>
<item
android:id="@+id/item1"
android:title="Item 1"
app:showAsAction="never" />
</menu>
还有 activity 如果有帮助的话
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
}
如何在保持状态栏与 ActionBar
重叠的情况下解决此问题?
试试这个:
设置setFlags的第二个参数为:
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
而不是
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
或者简单地用这个替换你的代码:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
我正在设置 WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
标志以使状态栏与 ActionBar
重叠,并且我有一个带有子菜单的选项菜单。当我点击子菜单时出现问题-菜单项,然后它显示在屏幕外(几乎看不到它的左边缘)。
当我删除下面的标志时,子菜单正常显示。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
这是菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:title="Items"
app:showAsAction="never">
<menu>
<item
android:id="@+id/item2"
android:title="item 2"
app:showAsAction="never" />
<item
android:id="@+id/item3"
android:title="item 3"
app:showAsAction="never" />
</menu>
</item>
<item
android:id="@+id/item1"
android:title="Item 1"
app:showAsAction="never" />
</menu>
还有 activity 如果有帮助的话
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
}
如何在保持状态栏与 ActionBar
重叠的情况下解决此问题?
试试这个:
设置setFlags的第二个参数为:
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
而不是
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
或者简单地用这个替换你的代码:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);