[英]Android: Optimize Design for different Screen Sizes
I designed a .xml file, with a relative Layout where the distance between the elements is definied by the use of "dp". 我设计了一个.xml文件,具有一个相对的Layout,其中元素之间的距离通过使用“ dp”来定义。 I thought this would work well, until I got a new Smartphone, with a much bigger screen than my old one had. 我认为这会很好用,直到我有了一部新的智能手机,并且屏幕要比旧的大得多。 At the Top there is a TextView which should use 12% of the screen, than there is a ScrollView which should use 84% of the screen, and the last 4% should be empty. 在顶部,有一个TextView应该使用12%的屏幕,而在ScrollView中应该使用84%的屏幕,最后4%应该为空。
This is the .xml file: 这是.xml文件:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.96"
android:background="@drawable/hintergrund"
android:orientation="vertical" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="35dp"
android:layout_marginTop="17dp"
android:text="Prüfung"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#000000" />
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="437dp"
android:layout_marginTop="58dp">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/textView5"
android:layout_width="293dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textColor="#000000"
android:textSize="16dp" />
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:layout_gravity="center_horizontal"
>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
>
<TextView
android:layout_height="wrap_content"
android:text="@string/sf"
android:textColor="#000000" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
>
<Spinner
android:id="@+id/spinner1"
android:text="@string/sf"
android:prompt="@string/sf"
android:drawSelectorOnTop="true"
/>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
>
<TextView
android:layout_height="wrap_content"
android:text="@string/odf"
android:textColor="#000000" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
>
<Spinner
android:id="@+id/spinner2"
android:layout_width="237dp"
android:text="@string/odf"
android:prompt="@string/odf"
android:drawSelectorOnTop="true"
/>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
>
<TextView
android:layout_height="wrap_content"
android:text="@string/ps"
android:textColor="#000000" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
>
<Spinner
android:id="@+id/spinner3"
android:text="@string/ps"
android:prompt="@string/ps"
android:drawSelectorOnTop="true"
/>
</TableRow>
</TableLayout>
<ProgressBar
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="109dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:id="@+id/progressBar1" />
<TextView
android:id="@+id/textView14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:layout_gravity="center_horizontal"
android:textSize="12sp" />
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_gravity="center_horizontal"
>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
>
<Button
android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Vorherige" />
<Button
android:id="@+id/btn6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nächste" />
</TableRow>
</TableLayout>
</LinearLayout>
</ScrollView>
</RelativeLayout>
I changed your RelativeLayout with LinearLayout and i set weightSum to LinearLayout as 100. Last step is share it for its child as you want: 我使用LinearLayout更改了您的RelativeLayout,并将weightSum设置为LinearLayout为100。最后一步是根据需要为其子级共享它:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="100"
android:background="@drawable/hintergrund"
android:orientation="vertical" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginLeft="35dp"
android:layout_marginTop="17dp"
android:text="Prüfung"
android:layout_weight="12"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#000000" />
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="84"
android:layout_marginTop="58dp" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView5"
android:layout_width="293dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textColor="#000000"
android:textSize="16dp" />
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp" >
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" >
<TextView
android:layout_height="wrap_content"
android:text="@string/sf"
android:textColor="#000000" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" >
<Spinner
android:id="@+id/spinner1"
android:drawSelectorOnTop="true"
android:prompt="@string/sf"
android:text="@string/sf" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" >
<TextView
android:layout_height="wrap_content"
android:text="@string/odf"
android:textColor="#000000" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" >
<Spinner
android:id="@+id/spinner2"
android:layout_width="237dp"
android:drawSelectorOnTop="true"
android:prompt="@string/odf"
android:text="@string/odf" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" >
<TextView
android:layout_height="wrap_content"
android:text="@string/ps"
android:textColor="#000000" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" >
<Spinner
android:id="@+id/spinner3"
android:drawSelectorOnTop="true"
android:prompt="@string/ps"
android:text="@string/ps" />
</TableRow>
</TableLayout>
<ProgressBar
android:id="@+id/progressBar1"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="109dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp" />
<TextView
android:id="@+id/textView14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textColor="#000000"
android:textSize="12sp" />
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp" >
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" >
<Button
android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Vorherige" />
<Button
android:id="@+id/btn6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nächste" />
</TableRow>
</TableLayout>
</LinearLayout>
</ScrollView>
Using this textview as an example 以这个textview为例
<TextView
android:id="@+id/textView5"
android:layout_width="293dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textColor="#000000"
android:textSize="16dp" />
the problem is you have hard width's ie. 问题是你有硬宽度的即。 android:layout_width="293dp"
instead it should read android:layout_width="match_parent"
相反,它应该显示为android:layout_width="match_parent"
then add a margin to the right or where ever: android:layout_marginLeft="20dp"
然后在右边或任何地方添加边距: android:layout_marginLeft="20dp"
so this will make the width of you textview go all the way to the other side of the screen but indent the right margin 20dp
so you would see the space you want 因此,这会使textview的宽度一直延伸到屏幕的另一侧,但缩进右边距20dp
这样您就可以看到想要的空间
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.