【问题标题】:Android set layout depending screen size [duplicate]Android根据屏幕尺寸设置布局[重复]
【发布时间】:2014-07-02 20:00:14
【问题描述】:

首先,我必须说我是初学者。但是已经制作了一个可以在我的 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 错误,请告诉我。

【问题讨论】:

标签: android layout screen


【解决方案1】:

我只是想说这样你会重新发现火。你走错了路。你不需要在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 属性来定位。

【讨论】:

  • 据我所知,我应该输入以下代码: @layout/main_activity_tablet 到 manifest.xml?但它说:属性缺少 Android 命名空间前缀
猜你喜欢
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
相关资源
最近更新 更多