2

Androidアプリで次のレイアウトを実現しようとしています:

ここに画像の説明を入力

ご覧のとおり、幅の約 70% を占める中央のログイン ボックスが必要です。これを達成するには、基本的に2つのアプローチがあると思います。

1.ログイン ボックスの Linear または Relative レイアウトを作成し、左側と右側の両方に layoutMargin を追加します。

2.ラッパー LinearLayout を weightSum="1" で作成し、その中に RelativeLayout を layout_width="0dp" および layout_weight="0.7" で配置します。

最初のアプローチを使用すると、XML は次のようになります。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ImageView
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"        
        android:src="@drawable/logo"
        android:contentDescription="@string/logo"  
         />

    <LinearLayout
        android:layout_width="match_parent"         
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="#999999"
        android:gravity="center"
        android:layout_margin="30dp"
         >
        <EditText
            android:layout_width="fill_parent"           
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:hint="@string/email" />
        <EditText
            android:layout_width="fill_parent"            
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:hint="@string/password" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"  
            android:text="@string/login"/>


    </LinearLayout>     


</LinearLayout>

2 番目のアプローチでは、現在のラッパー LinearLayout の上に weightSum="1" を指定してラッパー LinearLayout を配置するだけで、内部レイアウトは layout_weight="0.7" 属性を取得します。

どれが最良のアプローチだと思いますか? 前もって感謝します。

4

2 に答える 2

3

かなり単純な方法は、相対レイアウト内で線形レイアウトを使用することです。次に、layout_centerInParent を使用して「true」に設定します。それが完了したら、マージンを好きなように設定できます (私は 30 dp を使用しました)。次に例を示します。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:layout_margin="30dp"
    android:orientation="vertical"
    android:weightSum="50" >

    <EditText
    android:id="@+id/editText1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:inputType="textEmailAddress" >

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/editText2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/editText1"
    android:layout_centerHorizontal="true"
    android:inputType="numberPassword" />

<Button
    android:id="@+id/button1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/editText2"
    android:layout_centerHorizontal="true"
    android:text="Button" />
</LinearLayout>

</RelativeLayout>

もちろん、ログイン ボックスの幅を画面の幅のちょうど 70% にしたい場合は、プログラムでそれを行うことができます。

于 2012-10-12T18:08:15.050 に答える
0

LinearLayout/RelativeLayout でログイン ボックスを作成し、水平方向に中央揃えにします。

于 2012-10-12T17:47:06.993 に答える