如何在Android中使用资源限定符系统指定仅在宽度小于特定值时才应用资源?
详细说明,假设我想在当前可用宽度达到320dp时提供一个布局,并为所有其他情况提供另一种布局。这就是我想到的:
layout-w320dp/mylayout.xml
layout/mylayout.xml
但是,根据我对resource matching algorithm的理解,即使是大型设备(例如横向平板电脑)也符合w320dp
- 因为,可用宽度大于320dp。
因此,来自layout-w320dp
的资源将始终 - 即使对于较大的手机和平板电脑也是如此。选择layout
文件夹中的默认资源的唯一时间是可用宽度小于 320dp。
那么,如何使用Android资源匹配系统表达“小于”的关系?
答案 0 :(得分:6)
唉!在发布问题之后,我意识到这样做的一种方法是否定等式 - 即:
layout-w320dp/mylayout.xml --> layout for screens larger than 320dp
layout/mylayout.xml --> layout for up to 320dp
然而,我仍然有兴趣知道是否可以实现原始的“小于”关系,因为它使意图更加清晰。
答案 1 :(得分:-1)
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
float density = getResources().getDisplayMetrics().density;
float dpHeight = metrics.heightPixels / density;
float dpWidth = metrics.widthPixels / density;
if(dpWidth >= 360){
//change your resource
}