2014-06-17 2 views
7

Sto creando una finestra di dialogo personalizzata di cui voglio che l'altezza e la larghezza siano predefinite per adattarsi a tutte le dimensioni dello schermo.Imposta altezza e larghezza della finestra di dialogo personalizzata

Ma non sta succedendo così. Tuttavia, la finestra di dialogo sembra molto piccola. questo è l'XML per la finestra di

<?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> 

questo è il mio dialogo classe

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(); 
     } 
     } 

Come faccio a impostare l'altezza e la larghezza di apparire una dimensione predefinita in modo tale che sembra perfetto su tutte le dimensioni dello schermo

Sto diventando una finestra di dialogo molto piccola.

risposta

1

ho cambiato il tuo laici messo prova ora

<?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

Dovresti indicare cosa esattamente hai cambiato. – wsgeorge

10

Non Classe Finestra uso, Try This Classe:

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 del dialogo personalizzato() setAttributes (lp);.' Bisogno di impostazione dopo 'dialog.show()' – Doomsknight

+0

funziona come un fascino, grazie! – karenms

0

Si potrebbe aggiungere un android:gravity="center" al vostro LinearLayout e quindi impostare un altezza minima sul LinearLayout pure, ad esempio, android:minHeight="120dp". È quindi possibile testare il layout su vari dispositivi e modificarlo fino a quando si ottiene qualcosa che funziona su tutte le dimensioni dello schermo:

<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

In classe Dialog che si estende:

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

correttamente per ogni s creens.

1

Mettere this.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); in onCreate()