Android 不同屏幕尺寸的不同菜单XML
是否可以为不同的屏幕大小定义不同的菜单?我尝试添加文件夹Android 不同屏幕尺寸的不同菜单XML,android,menu,Android,Menu,是否可以为不同的屏幕大小定义不同的菜单?我尝试添加文件夹res/menu large和res/menu xlarge,但我在此处放置的菜单XML对我的xlarge平板电脑没有任何影响。不是真正的答案,只是一个想法,但太长,无法发表评论: 我不认为这是支持的,这似乎是没有文件记录。但一个可能的想法是,在不同的值上设置布尔值。例如,您可以设置som res values文件夹: res/values xlarge res/values大 res/values-sw600dp 等等。在该值中,可以声明
res/menu large
和res/menu xlarge
,但我在此处放置的菜单XML对我的xlarge平板电脑没有任何影响。不是真正的答案,只是一个想法,但太长,无法发表评论:
我不认为这是支持的,这似乎是没有文件记录。但一个可能的想法是,在不同的值上设置布尔值。例如,您可以设置som res values文件夹:
res/values xlarge
res/values大
res/values-sw600dp
等等。在该值中,可以声明布尔值:
<resources>
<bool name="isXLarge">true</bool>
</resources>
我从未测试过它,因为如果您将不同的可绘制文件夹设置为可绘制文件夹,则生成的菜单在所有屏幕大小上都很好。您可以为不同的屏幕大小创建不同的菜单文件夹,例如: 资源/菜单 res/menu-sw600dp res/menu-sw720dp 等等
然后将菜单文件放在相应的文件夹中,它们将在运行时被提取。谢谢!这不是一个很好的解决方案,因为它需要Java代码分支,但我会尝试一下。是的,我知道。但有时,如果我们想做的事情没有任何支持,我们需要简洁的解决方案……)
<resources>
<bool name="isLarge">true</bool>
</resources>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
boolean xlargeValue = getResources().getBoolean(R.bool.isXlarge);
boolean largevalue = getResources().getBoolean(R.bool.isLarge);
boolean tabletValue = getResources().getBoolean(R.bool.sw620dp):
if(xlargeValue==true){
inflater.inflate(R.menu.menu_xlarge, menu);
}else if(largevalue==true){
inflater.inflate(R.menu.menu_large, menu);
}else if(tabletValue==true){
inflater.inflate(R.menu.menu_sw620dp, menu);
}
return true;
}