10

Tôi đã tạo hộp thoại tùy chỉnh, mã bên dưới. Vấn đề là, chiều cao của hộp thoại đang trở thành wrap_content, tức là nó độc lập với chiều cao mà tôi đề cập đến trong xml. Tôi đã kiểm tra các câu hỏi khác, họ không giúp tôi.thay đổi chiều cao của hộp thoại tùy chỉnh trong Hộp thoại

public class PointsDialogFragment extends DialogFragment{ 

    private static final String TAG = PointsDialogFragment.class.getSimpleName(); 

    public static PointsDialogFragment newInstance(){ 
     PointsDialogFragment pdf = new PointsDialogFragment(); 
     Bundle newBundle = new Bundle(); 
     pdf.setArguments(newBundle); 
     return pdf; 
    } 

    private View mRoot; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     getDialog().requestWindowFeature(STYLE_NO_TITLE); 
     mRoot = inflater.inflate(R.layout.fragment_points_dialog, null); 
     return mRoot; 
    } 
} 

và xml cho fragment_points_dialog.xml là

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="313dp" 
    android:layout_width="fill_parent" 
    android:background="@color/green_gradient_start" 
> 
    <RelativeLayout 
     android:layout_width="173dp" 
     android:layout_height="242dp" 
     android:background="@drawable/reward_box" 
     android:id="@+id/reward_box" 
     android:layout_alignParentLeft="true" 
    > 
     <TextView 
      android:layout_centerInParent="true" 
      style="@style/WallSectionHeading" 
      android:text="5" 
     /> 
    </RelativeLayout> 
    <RelativeLayout 
     android:layout_width="173dp" 
     android:layout_height="250dp" 
     android:background="@drawable/reward_mascot" 
     android:layout_alignParentRight="true" 
    > 
     <LinearLayout 
      android:id="@+id/reward_cloud" 
      android:layout_width="wrap_content" 
      android:layout_height="100dp" 
      android:background="@drawable/reward_cloud" 
      android:layout_alignParentBottom="true" 
     > 
      <TextView 
       android:layout_gravity="center_vertical" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="You have gained 5 Delight Points" 
       android:textColor="@color/white" 
       android:textStyle="italic" 
       android:paddingLeft="15dp" 
       android:paddingRight="10dp" 
      /> 
     </LinearLayout> 

    </RelativeLayout> 

</RelativeLayout> 

Tôi thấy hộp thoại như thế này ..

PointsDialogFragment pdf = PointsDialogFragment.newInstance(); 
pdf.show(getFragmentManager(), "dialog"); 

Tôi muốn biết một cách tôi có thể thay đổi chiều cao của trong hộp thoại.

Trả lời

17

Tôi nghĩ rằng vấn đề là khi bạn thổi phồng View, bạn không cung cấp ViewParent. Khi bạn không cung cấp tham số đó, bất kỳ tham số "layout_X" nào trong thư mục gốc của Chế độ xem của bạn sẽ bị bỏ qua, vì các giá trị đó được cung cấp cho cha mẹ (là giá trị rỗng trong tình huống hiện tại của bạn). Những gì bạn có thể làm là cung cấp một ViewParent khi thổi phồng hoặc bọc View XML của bạn trong một ViewGroup khác, để lại các tham số layout tuyệt đối ở cấp độ 2.

Mẫu mã: mRoot = inflater.inflate(R.layout.fragment_points_dialog, container, false);

+0

mRoot = inflater.inflate (R.layout.fragment_points_dialog, vùng chứa); câu trả lời này có đúng không ??? – Ads

2

Trong xml DialogFragment của bạn, thay vì sử dụng LinearLayout sử dụng một RelativeLayout và thiết lập layout_height để wrap_content nó sẽ thay đổi kích thước tự động xem.

Đảm bảo không sử dụng thẳng hàng dưới cùng nếu không nó sẽ lấp đầy màn hình.

+0

Cái này phù hợp với tôi. Ngoài ra, hãy đảm bảo rằng không có chế độ xem con nào đang sử dụng match_parent làm chiều cao để nó sẽ không lấp đầy màn hình. – mariozawa

Các vấn đề liên quan