4

画面の向きで私のLinearLayout変化。ポートレート モードでは、完璧に見えます。

ポートレートモード

しかし、ランドスケープモードでは次のようになります。

横長モード

両方のモードで同じように見えるように UI を修正するにはどうすればよいですか?

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/border"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/imgfourth1"
            android:layout_width="70dp"
            android:layout_height="50dp"
            android:layout_marginRight="25dp"
            android:layout_marginLeft="25dp"
            android:paddingTop="2dp"    
            android:src="@drawable/amlet1" />

        <ImageView
            android:id="@+id/imgfourth2"
            android:layout_width="70dp"
            android:paddingTop="2dp"
            android:layout_height="50dp"  
            android:layout_marginRight="25dp"    
            android:contentDescription="@null"
            android:src="@drawable/lnch1" />

        <ImageView
            android:id="@+id/imgfourth3"
            android:layout_marginRight="25dp"
            android:paddingLeft="20dp"
            android:layout_width="70dp"
            android:layout_height="50dp"
            android:paddingTop="2dp"
            android:contentDescription="@null"   
            android:src="@drawable/supper" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="20dp"
        android:background="@drawable/border4"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/txtfth1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="2dp"
            android:layout_marginLeft="25dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:gravity="center"
            android:contentDescription="@null"
            android:text="Breakfast" />

        <TextView
            android:id="@+id/txtfth2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="25dp"
            android:paddingLeft="10dp"
            android:gravity="center"
            android:paddingRight="35dp"      
            android:layout_marginTop="2dp"   
            android:contentDescription="@null"
            android:text="Lunch" />

        <TextView
            android:id="@+id/txtfth3"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="2dp"
            android:gravity="center"
            android:paddingRight="30dp"
            android:contentDescription="@null"
            android:text="Supper" />
    </LinearLayout>
</LinearLayout>
4

5 に答える 5

1

縦向きモード用と横向きモード用の 2 つの異なるレイアウトを作成できます。それはあなたの問題を解決します。

Keep your
1. portrait mode layout in res/layout folder and
2. landscape mode layout in res/layout-land folder.

Android は、向きに基づいて適切なレイアウトを取ります。

*編集: 単一のレイアウト* **

縦向きと横向きに単一のレイアウトを使用したい場合は、以下が役立ちます

私はそれを適切に見せるためにandroid:weightsumとを使用しました。android:layout_weight

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="100">

    <ImageView
        android:id="@+id/imgfourth1"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="33"            
        android:src="@drawable/ic_launcher" />

    <ImageView
        android:id="@+id/imgfourth2"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="33" 
        android:src="@drawable/ic_launcher" />

    <ImageView
        android:id="@+id/imgfourth3"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="33"  
        android:src="@drawable/ic_launcher" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="20dp"        
    android:orientation="horizontal"
    android:weightSum="100" >

    <TextView
        android:id="@+id/txtfth1"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="33"  
        android:gravity="center_horizontal" 
        android:text="Breakfast" />

    <TextView
        android:id="@+id/txtfth2"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="33"   
        android:gravity="center_horizontal" 
        android:text="Lunch" />

    <TextView
        android:id="@+id/txtfth3"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="33"  
        android:gravity="center_horizontal"  
        android:text="Supper" />
</LinearLayout>

于 2013-08-16T13:14:07.927 に答える
0

次の行を試してください。

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:weightSum="3"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/imgfourth1"
        android:layout_width="0dip"
        android:layout_height="50dp"
        android:layout_weight="1" 
        android:src="@drawable/amlet1" />

    <ImageView
        android:id="@+id/imgfourth2"
        android:layout_width="0dip"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:src="@drawable/lnch1" />

    <ImageView
        android:id="@+id/imgfourth3"
        android:layout_width="0dip"
        android:layout_height="50dp"
        android:layout_weight="1" 
        android:src="@drawable/supper" />
</LinearLayout>

ほとんどの場合、画面を埋めてから、必要に応じて分割すると考える必要があります。したがって、横向き、縦向き、またはさまざまな密度でも収まります。また、画像の高さを異なる密度の dimens のフォルダーに入れることをお勧めします。これにより、さまざまなものにすることもできます。

于 2013-08-16T14:02:44.517 に答える
0

単純に android:layout-weight="33" と入力すると、3 つの要素すべてに 33% のスペースが与えられ、あらゆる方向のあらゆる解像度に適合します。

于 2014-09-15T17:02:43.577 に答える