[英]Android: Optimize Design for different Screen Sizes
我设计了一个.xml文件,具有一个相对的Layout,其中元素之间的距离通过使用“ dp”来定义。 我认为这会很好用,直到我有了一部新的智能手机,并且屏幕要比旧的大得多。 在顶部,有一个TextView应该使用12%的屏幕,而在ScrollView中应该使用84%的屏幕,最后4%应该为空。
这是.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>
我使用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>
以这个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" />
问题是你有硬宽度的即。 android:layout_width="293dp"
相反,它应该显示为android:layout_width="match_parent"
然后在右边或任何地方添加边距: android:layout_marginLeft="20dp"
因此,这会使textview的宽度一直延伸到屏幕的另一侧,但缩进右边距20dp
这样您就可以看到想要的空间
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.