50 votes

Largeur de dialogue Android

Je n'arrive pas à contrôler la largeur du dialogue. J'ai une mise en page simple comme so`

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:theme="@android:style/Theme.Dialog"> 
<ScrollView 
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout     android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">


    <TextView android:id="@+id/name_prompt_view"
        android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="@string/name_prompt"
     android:padding="10dip"/>
    <EditText android:id="@+id/name_inp" android:layout_width="fill_parent" 

 android:layout_height="wrap_content" 
   android:lines="1"
      android:maxLines="1"
      android:maxLength="48"
      android:inputType="text">
 </EditText>

  <TextView android:id="@+id/t1_prompt_view"
        android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="@string/t1_prompt"
     android:padding="10dip"/>
    <Spinner android:id="@+id/t1_inp" android:layout_width="fill_parent" 
 android:layout_height="wrap_content" 
   android:lines="1"
      android:maxLines="1"
      android:maxLength="48"
      android:inputType="text"
      android:singleLine="true"
      android:layout_weight="1"
      android:entries= "@array/t1_allowed_values">
 </Spinner>
     </LinearLayout>
</ScrollView>
</LinearLayout>
 

pour une raison quelconque, la boîte de dialogue est suffisamment large pour que le champ de saisie de texte ait une largeur d'environ 11 caractères. Comment puis-je faire en sorte que la largeur du dialogue remplisse l'écran?

86voto

UMAR Points 13631

J'ai eu le même problème.

J'ai utilisé le code suivant pour créer un dialogue fill_parent et cela a bien fonctionné.

 public class SharePost extends Dialog
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.adaptor_contentsharepost);

        LayoutParams params = getWindow().getAttributes();
        params.height = LayoutParams.FILL_PARENT;
        getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
    }
}
 

disposition

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:id="@+id/dialogWidth"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    contents here

</LinearLayout>
 

57voto

h_rules Points 729

J'utilise:

 getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
 

16voto

roy mathew Points 1542

Définissez une largeur minimale dans la disposition la plus haute.

 android:minWidth="300dp"
 

Par exemple:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"
  xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="300dp">

<!-- Put remaining contents here -->

</LinearLayout>
 

13voto

Alex Pretzlav Points 2475

Comme Matthias le souligne, comment puis-je obtenir une fenêtre d'activité de style dialogue pour remplir l'écran? La solution UMAR fonctionne, mais uniquement si les attributs de la fenêtre sont définis APRÈS que la fonction setContentView () soit appelée.

0voto

Miky Rivers Points 229

Depuis API 8, FILL_PARENT est obsolète. Utilisez MATCH_PARENT à la place.

 params.height = LayoutParams.MATCH_PARENT;
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X