[解決済み] RelativeLayoutにおける幅の割合(%)。
2022-02-13 13:15:52
質問
ログイン用のフォームレイアウトを作成しています。
Activity
をAndroidアプリで作成しました。下の画像は、そのように見せたいのです。
このレイアウトを実現できたのは、以下の通りです。 XML . 問題は、ちょっとハチャメチャなことです。ホストのEditTextの幅をハードコードする必要があったのだ。具体的には、以下のように指定する必要があった。
android:layout_width="172dp"
ホストとポートのEditTextの幅をパーセンテージで指定したいのですが、可能でしょうか? 以下のXMLは私のDroidでは動作しますが、すべての画面では動作しないようです。もっと堅牢なソリューションが欲しいです。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/host_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/home"
android:paddingLeft="15dp"
android:paddingTop="0dp"
android:text="host"
android:textColor="#a5d4e2"
android:textSize="25sp"
android:textStyle="normal" />
<TextView
android:id="@+id/port_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/home"
android:layout_toRightOf="@+id/host_input"
android:paddingTop="0dp"
android:text="port"
android:textColor="#a5d4e2"
android:textSize="25sp"
android:textStyle="normal" />
<EditText
android:id="@+id/host_input"
android:layout_width="172dp"
android:layout_height="wrap_content"
android:layout_below="@id/host_label"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="4dp"
android:background="@android:drawable/editbox_background"
android:inputType="textEmailAddress" />
<EditText
android:id="@+id/port_input"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_below="@id/host_label"
android:layout_marginTop="4dp"
android:layout_toRightOf="@id/host_input"
android:background="@android:drawable/editbox_background"
android:inputType="number" />
<TextView
android:id="@+id/username_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/host_input"
android:paddingLeft="15dp"
android:paddingTop="15dp"
android:text="username"
android:textColor="#a5d4e2"
android:textSize="25sp"
android:textStyle="normal" />
<EditText
android:id="@+id/username_input"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/username_label"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="4dp"
android:background="@android:drawable/editbox_background"
android:inputType="textEmailAddress" />
<TextView
android:id="@+id/password_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/username_input"
android:paddingLeft="15dp"
android:paddingTop="15dp"
android:text="password"
android:textColor="#a5d4e2"
android:textSize="25sp"
android:textStyle="normal" />
<EditText
android:id="@+id/password_input"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/password_label"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="4dp"
android:background="@android:drawable/editbox_background"
android:inputType="textPassword" />
<ImageView
android:id="@+id/home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_centerVertical="false"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="15dp"
android:scaleType="fitStart"
android:src="@drawable/home" />
<Button
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/password_input"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:text=" login "
android:textSize="18sp" >
</Button>
</RelativeLayout>
解決方法は?
あなたが探しているのは
android:layout_weight
属性があります。これを使うと、パーセンテージを使ってレイアウトを定義することができます。
次の例では、左ボタンが70%、右ボタンが30%のスペースを使用しています。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="left"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".70" />
<Button
android:text="right"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".30" />
</LinearLayout>
どのようなViewでも同じように動作するので、必要に応じてボタンをいくつかのEditTextに置き換えることができます。
必ず
layout_width
から
0dp
を使用すると、ビューが正しく拡大縮小されないことがあります。
なお、ウェイトの合計は1でなくても構いませんが、私はこの方が読みやすいと思います。最初の重みを7、2番目の重みを3に設定しても、同じ結果になります。
関連
-
[解決済み】Android TextView : "setTextで表示されたテキストを連結しない" について
-
[解決済み] Android Studioで「URIが登録されていません」と報告されるのはなぜですか?[クローズド]
-
[解決済み] APKのインストール中にDELETE_FAILED_INTERNAL_ERRORエラーが発生する。
-
[解決済み] Androidで画面の幅と高さを取得する
-
[解決済み] ImageViewの幅と高さをプログラムで設定する?
-
[解決済み】ConstraintLayoutとRelativeLayoutの違いについて
-
[解決済み】AndroidでRelativeLayoutのviewのZ順を定義する。
-
[解決済み] LinearLayout、RelativeLayout、AbsoluteLayoutの違いは何ですか?
-
[解決済み] Android RelativeLayout プログラムによる "centerInParent "の設定
-
[解決済み] RelativeLayoutレイアウトパラメータをxmlではなくコードで設定するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】まだ警告が出る:設定 'compile' は時代遅れで 'implementation' に置き換わった。
-
[解決済み] [Solved] Error "File google-services.json is missing from module root folder. これがないとGoogle Services Pluginは機能しません" [重複]。
-
[解決済み】Android Studioです。「プロジェクトが C ドライブに作成されている場合、「タスク ':app:mergeDebugResources' の実行に失敗しました。
-
[解決済み】リストビューにonclicklistenerを追加する(android)
-
[解決済み] サポートされていないメソッドです。BaseConfig.getApplicationIdSuffix()がサポートされていません。
-
[解決済み] エラー - Android リソースのリンクに失敗しました (AAPT2 27.0.3 Daemon #0)
-
[解決済み] com.android.supportのライブラリは全て全く同じバージョン表記である必要があります。
-
[解決済み] 複数のデバイスを接続しているときにADB Shellを使用するには?error: more than one device and emulator "で失敗します。
-
[解決済み] Androidでイメージビューの背景を透明に設定する
-
[解決済み] Gradleのエラーです。イベントディスパッチスレッドからの書き込みアクセスは、Android Studioでのみ許可されます。