2

Android アプリケーションを構築していますが、ダイアログ フラグメントがあります。ダイアログ フラグメントには幅が設定されています。ただし、画面サイズが異なるデバイスでアプリを実行すると、ダイアログ フラグメントが適切に中央に配置されないという問題があります。

当初、私が持っていたものは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="500dp"
  android:layout_height="wrap_content">

  <-- code goes here -->

</RelativeLayout>

ご覧のとおり、幅が定義された relativeLayout があります。相対レイアウトでは使用できないことがわかっているのでlayout_weight、親の相対レイアウトを次のように線形レイアウトでラップしました。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="0.8"
    android:weightSum="1">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

    </RelativeLayout>
</LinearLayout>

ただし、画面サイズが小さいデバイスでアプリケーションを実行すると、ダイアログの断片が切り取られるため、それは機能しません。

ダイアログフラグメントの幅を画面サイズのパーセンテージとして設定するにはどうすればよいですか? これはまったく可能ですか、それともプログラムで設定する必要がありますか?

4

3 に答える 3

6

RelativeLayout に画面の 40% の幅を持たせたい場合、これは正しい方法ですが、親レイアウトには親レイアウトがなく、android:layout_weight は影響しないため、この手法は親レイアウトには適用できません。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="100">

<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="40">

</RelativeLayout>

相対レイアウトではlayout_weightを使用できないことを知っているので

LinearLayout の直接の子である場合、任意のビューとレイアウトで layout_weight を使用できます。

于 2015-02-25T11:44:22.147 に答える
2

新しいパーセント サポート ライブラリを使用すると、PercentRelativeLayout.

このリンクをチェックしてください

于 2015-07-20T22:17:21.553 に答える