Android设置布局取决于屏幕大小

时间:2014-05-14 16:23:54

标签: android layout screen

首先,我必须说我是初学者。但已经提出了一个适用于我的Nexus 7平板电脑的应用程序。但我想让它在所有设备上工作。是的,我知道,这个问题以前一直存在。但是我想要你的意见,如果等等它会起作用吗......

 public void setLayout()
 {

DisplayMetrics dm = new DisplayMetrics();  //avoid this it just gets screen size.
    getWindowManager().getDefaultDisplay().getMetrics(dm);
int width=dm.widthPixels;
int height=dm.heightPixels;
int dens=dm.densityDpi;
double wi=(double)width/(double)dens;
double hi=(double)height/(double)dens;
double x = Math.pow(wi,2);
double y = Math.pow(hi,2);
double ss = Math.sqrt(x+y);     

if(ss <7) //n7 If screen size is nexus 7, application will set nexus7 layout
{
    setContentView(R.layout.screen7);
}
else
{
setContentView(R.layour.default); //user is not using nexus 7 so we will set default layout
}

但我需要在每个需要设置布局的活动中运行此方法。就像在MainActivity中一样,而不是使用 的setContentView(R.layout.activity_main);

我想使用setLayout(); // so方法检查用户正在使用的屏幕尺寸,以便我们显示可用的最佳布局。

我希望你明白我想做什么;) 谢谢 :) 如果您想要LogCat错误,请告诉我。

1 个答案:

答案 0 :(得分:0)

我只是想这样说你会重新发现火。你走错了路。你不需要在java中做这些事情。你可以在XML文件,android中完成所有这些,而不是为你做。尝试使用视图的关系定位,而不是精确的像素。 Android有一个很好的衡量标准,称为dp,它在某种程度上表示你好像告诉系统在哪里定位百分比。 这是一个帮助我更好理解的链接(忽略小尺寸): http://android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html

我必须给你的另一个建议是尝试使用RelativeLayout和LinearLayout,你可以使用match_parent,wrap_content或者你可以使用layout_gravity属性进行定位。