2

これは私のカスタム ダイアログです。いくつかのテキスト ボックスと 2 つのボタンがあります。私はそれに RelativeLayout を使用しています。

ダイアログのサイズをコンテンツと一致させたいのですが、その下の空白スペースだけではありません。明示的なピクセルの高さを使用したくありません (良い習慣ではありません)。

別のことですが、すべてのビューの間にスペースを空ける方法はありますか?

ここに画像の説明を入力

これは私のXMLです

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

<TextView
    android:id="@+id/txt_desc"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="8pt"
    android:textStyle="italic" />

<TextView
    android:id="@+id/txt_date"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"         
    android:layout_marginLeft="10dp"
    android:layout_below="@+id/txt_desc"
    android:textSize="8pt" />

<TextView
    android:id="@+id/txt_place"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"         
    android:layout_marginLeft="10dp"
    android:layout_below="@+id/txt_date"
    android:textSize="8pt" />

<Button
    android:id="@+id/btn_close"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/txt_place"
    android:layout_toRightOf="@+id/view"
    android:text="@string/btn_close" />

<View
    android:id="@+id/view"
    android:layout_width="0dp"
    android:layout_height="1dp"
    android:layout_centerHorizontal="true" />

<Button
    android:id="@+id/btn_edit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/txt_place"
    android:layout_toLeftOf="@+id/view"
    android:drawableLeft="@android:drawable/ic_menu_edit"
    android:text="@string/btn_edit" />

</RelativeLayout>
4

2 に答える 2

4

最初の質問

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

2 番目の質問

さらに、View を Top から 5 dp 分離する場合は、android:marginTop="5dp" を使用します。marginLeft|Right|Bottom も利用できます。

<TextView
    android:id="@+id/txt_place"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"         
    android:layout_marginLeft="10dp"
    android:layout_marginTop="5dp" <-----------------
    android:layout_below="@+id/txt_date"
    android:textSize="8pt" />

ところで、もし私があなただったら、いくつかのレイアウトを入れ子にして並べます。一般的な相対レイアウトを使用してから、2 つの線形レイアウトを使用できます。1 つは TextView 用の水平レイアウト、もう 1 つはボタン用の垂直レイアウトです。間違いなくエディターをいじって、ダイアログに最適な外観を作ろうとすることができます。

編集

これを試してください:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#0000"
    android:orientation="vertical"
    android:paddingBottom="50dp" >

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

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/txt_desc"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="prova"
                android:textSize="8pt"
                android:textStyle="italic" />

            <TextView
                android:id="@+id/txt_date"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="prova"
                android:textSize="8pt" />

            <TextView
                android:id="@+id/txt_place"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="prova"
                android:textSize="8pt" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <Button
                android:id="@+id/btn_edit"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:drawableLeft="@android:drawable/ic_menu_edit"
                android:text="btn_edit" />

            <Button
                android:id="@+id/btn_close"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="btn_close" />

            <View
                android:id="@+id/view"
                android:layout_width="0dp"
                android:layout_height="1dp" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

テキストをハードコーディングしました。主なアイデアは、バックグラウンドで大きなコンテナ レイアウトを使用することです。これは透明 ( background=#0000) であり、その上にビューを含む wrap_content のレイアウトがあります。

この解決策で問題が解決しない場合は、コードで高さを直接編集できると思います。この質問に関連付けてみてください

于 2013-06-26T21:12:44.903 に答える
0

相対レイアウトの高さを に設定しますwrap_content

例えば:

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

    <!-- More XML -->

</RelativeLayout>

またfill_parent、幅と高さについては推奨されないことに注意してください。

android:layout_marginまたはをそれぞれ使用して、マージン (ビューの外側の余分なスペース) またはパディング (ビューの内側の余分なスペース) を追加できますandroid:paddinglayout_marginTopビューの特定の側にのみ適用されるなどのバリアントもあります。

于 2013-06-26T21:12:49.237 に答える