2014-06-17 18 views
7

Tôi đang tạo hộp thoại tùy chỉnh mà tôi muốn chiều cao và chiều rộng để phù hợp mặc định với tất cả kích thước màn hình.Đặt chiều cao và chiều rộng của hộp thoại tùy chỉnh

Nhưng nó không xảy ra như vậy. Hộp thoại xuất hiện rất nhỏ. Đây là XML cho hộp thoại

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="#D24379" 
android:orientation="vertical" > 

<TextView 
    android:id="@+id/txt_dia" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_margin="10dp" 
    android:textColor="@android:color/white" 
    android:textSize="15dp" 
    android:textStyle="bold" > 
</TextView> 

<LinearLayout 
    android:id="@+id/layButton" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="5dp" 
    android:orientation="horizontal" > 

    <Button 
     android:id="@+id/yesButton" 
     android:layout_width="0.0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="1.0" 
     android:background="#ffffff" 
     android:text="@string/yes" /> 

    <Button 
     android:id="@+id/noButton" 
     android:layout_marginLeft="5dp" 
     android:layout_width="0.0dip" 
     android:background="#ffffff" 
     android:layout_height="wrap_content" 
     android:layout_weight="1.0" 
     android:text="@string/no" /> 
</LinearLayout> 

đây là lớp thoại của tôi

public class CustomDialogClass extends Dialog implements 
      android.view.View.OnClickListener { 

     public Activity c; 
     public Dialog d; 
     public Button yes, no; 
     public TextView content; 

     public CustomDialogClass(Activity a) { 
      super(a); 
      this.c = a; 
     } 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      setContentView(R.layout.custom_dialog); 
      yes = (Button) findViewById(R.id.yesButton); 
      no = (Button) findViewById(R.id.noButton); 
      content=(TextView)findViewById(R.id.txt_dia); 
      yes.setOnClickListener(this); 
      no.setOnClickListener(this); 

     } 

     @Override 
     public void onClick(View v) { 
      switch (v.getId()) { 
      case R.id.yesButton: 

       break; 
      case R.id.noButton: 
       dismiss(); 
       break; 
      default: 
       break; 
      } 
      dismiss(); 
     } 
     } 

Làm thế nào để thiết lập chiều cao và chiều rộng xuất hiện một kích thước mặc định như vậy mà nó xuất hiện hoàn hảo trên tất cả kích thước màn hình.

Tôi là một hộp thoại rất nhỏ.

Trả lời

1

Tôi đã thay đổi lay bạn đặt thử tại

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="150dp" 
     android:background="#D24379" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/txt_dia" 
      android:layout_width="match_parent" 
      android:layout_height="30dp" 
      android:layout_marginTop="10dp" 
      android:layout_weight="0.20" 
      android:text="Are you good?" 
      android:textColor="@android:color/white" 
      android:textSize="15dp" 
      android:textStyle="bold" /> 

     <LinearLayout 
      android:id="@+id/layButton" 
      android:layout_width="match_parent" 
      android:layout_height="80dp" 
      android:layout_margin="5dp" 
      android:gravity="center" 
      android:orientation="horizontal" > 

      <Button 
       android:id="@+id/yesButton" 
       android:layout_width="0.0dip" 
       android:layout_height="wrap_content" 
       android:layout_weight="1.0" 
       android:background="#ffffff" 
       android:text="YES" /> 

      <Button 
       android:id="@+id/noButton" 
       android:layout_width="0.0dip" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="5dp" 
       android:layout_weight="1.0" 
       android:background="#ffffff" 
       android:text="NO" /> 
     </LinearLayout> 

    </LinearLayout> 
+3

Bạn nên nêu chính xác những gì bạn đã thay đổi. – wsgeorge

10

Không Dialog lớp sử dụng, Hãy thử lớp này:

public class MainActivity extends Activity { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 


        ShowDialog(); 

     } 

     private void ShowDialog() { 
       // TODO Auto-generated method stub 
       final Dialog dialog = new Dialog(context, 
         android.R.style.Theme_Translucent_NoTitleBar); 
       dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
       dialog.setContentView(R.layout.custom_dialog); 
       WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
       lp.copyFrom(dialog.getWindow().getAttributes()); 
       lp.width = WindowManager.LayoutParams.MATCH_PARENT; 
       lp.height = WindowManager.LayoutParams.WRAP_CONTENT; 
       lp.gravity = Gravity.CENTER; 

       dialog.getWindow().setAttributes(lp); 

       Button yes = (Button) dialog.findViewById(R.id.yesButton); 
       yes.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 

         dialog.dismiss(); 

        } 
       }); 

       Button no = (Button) dialog.findViewById(R.id.noButton); 
       no.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 
         Intent i = new Intent(
           Intent.ACTION_PICK, 

         dialog.dismiss(); 

        } 
       }); 

        TextView content =(TextView) dialog.findViewById(R.id.txt_dia); 



       dialog.show(); 
      } 
} 
+1

'dialog.getWindow thoại tùy chỉnh của bạn() setAttributes (lp);.' Cần thiết 'SAU dialog.show() ' – Doomsknight

+0

công trình như một say mê, cảm ơn! – karenms

0

Bạn có thể thêm một android:gravity="center" để LinearLayout của bạn và sau đó thiết lập một chiều cao tối thiểu trên LinearLayout là tốt, ví dụ android:minHeight="120dp". Sau đó bạn có thể kiểm tra cách bố trí của bạn trên các thiết bị khác nhau và tinh chỉnh nó cho đến khi bạn nhận được một cái gì đó mà làm việc trên tất cả các kích thước màn hình:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:minHeight="120dp" 
android:gravity="center" 
android:background="#D24379" 
android:orientation="vertical" > 
2

Trong lớp mở rộng Dialog:

public MyPopUp(MainActivity activity, String sPrm) { 
    super(activity); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.alert_dialog); 
    LinearLayout bedLcl = (LinearLayout) findViewById(R.id.bed); 
    TextView textLcl = (TextView) findViewById(R.id.dialog_text); 
    textLcl.setText(sPrm); 
    setOnCancelListener(this); 
    DisplayMetrics displayMetrics = new DisplayMetrics(); 
activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
    int widthLcl = (int) (displayMetrics.widthPixels*0.9f); 
    int heightLcl = (int) (displayMetrics.heightPixels*0.9f); 
    FrameLayout.LayoutParams paramsLcl = (FrameLayout.LayoutParams) 
    bedLcl.getLayoutParams(); 
    paramsLcl.width = widthLcl; 
    paramsLcl.height =heightLcl ; 
    paramsLcl.gravity = Gravity.CENTER; 
    show(); 
    Window window = getWindow(); 
    bedLcl .setLayoutParams(paramsLcl); 
    window .setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));} 

enter image description here

đúng cho tất cả các s creens.

1

Đặt this.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); trong onCreate()

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