我正在编写一个在720p屏幕上运行良好的应用程序。我想让这个应用程序在不同的屏幕尺寸上运行。我读了这篇文章:http://developer.android.com/guide/practices/screens_support.html
但我很困惑。我为不同的布局(layout-normal,layout-large,layout-xlarge)制作了3个文件夹,并在每个文件夹中放置了不同的XML文件。但有一些屏幕布局正常,我的应用程序在其中一些看起来不错,而在其他屏幕看起来很糟糕。例如,这些尺寸是正常的布局:(4.7“WXGA,4”WVGA,3.7“WVGA,...)但我的应用程序看起来很好4”和3.7“而其他类型看起来非常糟糕。
layout-normal文件夹中的my activity-main.xml是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/backasli"
android:orientation="vertical" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="100dp"
android:paddingTop="140dp"
android:stretchColumns="3" >
<TableRow
android:id="@+id/tableRow6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" >
<TextView
android:id="@+id/txt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="pray :"
android:textColor="#031a7b"
android:textSize="15sp" />
</TableRow>
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" >
<TextView
android:id="@+id/namaztxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#031a7b"
android:textSize="20sp" />
</TableRow>
<TableRow android:gravity="center" >
<Button
android:id="@+id/buttonchange"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:background="@drawable/ubtn"
android:text="change"
android:textColor="#ffffff"
android:textSize="20sp" />
</TableRow>
</TableLayout>
</LinearLayout>
答案 0 :(得分:2)
Android提供了支持多种屏幕尺寸的非常好的方法。它被称为权重。您应该使用LinearLayout
权重并查看图形视图以了解您希望如何调整大小。
完全避免:
相信我,我迄今为止开发的所有应用程序(12)都是使用所有平台上的1个布局文件的权重完成的。它有效,并且像奇迹一样工作。
编辑:
我也从不使用超过5dp的填充和10dp的边距。这样我就可以保持代码干净,Android权重可以处理我的可用空间。
有关权重的更多信息,请查看this问题。从一开始就有很好的解释。
再次编辑:
想一想。你假设dp是&#34;相同&#34;就所有手机的物理毫米(毫米)而言。但事实并非如此。事实上,X和Y 1 dp可能意味着&#34; mm&#34;中的某些不同。 dp是&#34;不是&#34;是一致的。使用100dp等代码并设置硬编码宽度和高度时要小心。更糟糕的是,多个布局文件。你将会遇到许多代码维护噩梦。