我一直试图解决这个问题,但我真的不明白.. 如果我想创建一个应用程序,其中一个布局应该适合所有Android设备(通过缩放)..我怎么能实现这个?..例如..我可能有一个300dp的editText,这对我的三星看起来很棒Galaxy S2 ..但是如果我在我的nexus 10上运行相同的应用程序,它看起来会非常小,然后我会像editText那样在宽度和高度上扩展以适应我的nexus 10 ..有什么简单的方法可以这个吗?
我注意到有一种称为重量的东西......但是如果我创建了三个editTexts,其中第一个重量为10,那么2:重量为20,然后是3:重量为80,最后一个从来没有露面......
无论如何......你如何通过最佳实践处理这些东西?
答案 0 :(得分:0)
通常可以通过添加
来处理这种情况<supports-screens android:normalScreens="true"
android:smallScreens="true" android:largeScreens="true"
android:anyDensity="true" android:resizeable="true" />
答案 1 :(得分:0)
使用xhdpi资源并尝试使用布局参数在运行时设置所有布局 根据设备。
或者让android决定什么是最适合设备创建以下文件夹
以及更好地整理布局的类似文件夹
答案 2 :(得分:0)
这份文件将是很好的帮助
http://developer.android.com/guide/practices/screens_support.html
如果你的手机和平板电脑的布局都很好看,你需要有单独的布局文件,一个布局文件,另一个布局文件 - xlarge(10英寸平板电脑),编辑文本的大小不同。
另一种方法是保留单个布局文件,但将所有与大小相关的值提取到单独的xml文件中。将它们分别放在值和值-xlarge文件夹中。
答案 3 :(得分:0)
我是这样做的,
创建一个可以调用的函数,该函数返回与设备宽度相关的大小。 “32”是任意的,它为您提供与屏幕成比例的相对字体大小。
textView.setTextSize(getFontSize(activity));
public static int getFontSize (Activity activity) {
DisplayMetrics dMetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dMetrics);
// lets try to get them back a font size realtive to the pixel width of the screen
final float WIDE = activity.getResources().getDisplayMetrics().widthPixels;
int valueWide = (int)(WIDE / 32.0f / (dMetrics.scaledDensity));
return valueWide;
}