在 Android 自定義 Dialog 佈局中,若 TextView 設置 layout_height="fill_parent" (即 match_parent),會佔滿整個對話框空間,導致後續的 Button 被擠出可視區域而不顯示。
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" <!-- 錯誤:fill_parent 佔滿高度 -->
android:text="TextView" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
layout_height="fill_parent" 要求佔滿父佈局剩余高度wrap_content),但 TextView 強制佔滿<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" <!-- 修正:包裹內容高度 -->
android:text="TextView" />
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="請修正以下錯誤:"
android:textSize="16sp"
android:textColor="#333333" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:paddingHorizontal="32dp"
android:text="關閉" />
</LinearLayout>
Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.custom_dialog); // 直接使用佈局資源
dialog.setTitle("提示");
TextView textView = dialog.findViewById(R.id.textView1);
textView.setText(errorMessage);
Button button = dialog.findViewById(R.id.button1);
button.setOnClickListener(v -> dialog.dismiss());
dialog.show();
new AlertDialog.Builder(this)
.setTitle("提示")
.setMessage(errorMessage)
.setPositiveButton("確定", (dialog, which) -> dialog.dismiss())
.setNegativeButton("取消", null)
.show();
| 屬性 | 行為 | 適用場景 |
|---|---|---|
| wrap_content | 適應內容大小 | 文字、圖片、按鈕等內容視圖 |
| match_parent | 填滿父佈局 | 容器視圖、背景、列表項根視圖 |
| 0dp + layout_weight | 按權重分配剩余空間 | 均分佈局、自適應寬高 |