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" 属性を取得します。
どれが最良のアプローチだと思いますか? 前もって感謝します。