簡體   English   中英

Android:針對不同的屏幕尺寸優化設計

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM