web-dev-qa-db-fra.com

Android largeur de dialogue

Je n'arrive pas à contrôler la largeur de la boîte de dialogue. J'ai une disposition simple comme ça`

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

        <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" />

         </LinearLayout>

    </ScrollView>

</LinearLayout>

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

50
Solid

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

J'ai utilisé le code suivant pour créer une boîte de 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="match_parent"
    Android:layout_height="match_parent">

    contents here

</LinearLayout>
86
UMAR

J'utilise:

getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
56
hrules6872

Définissez une largeur minimale dans la mise en page 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>
15
roy mathew

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 setContentView () soit appelé.

13
Alex Pretzlav

Essaye ça. Ça marche pour moi.

    dialog = new Dialog(Activity.this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.feedback_popup);
    dialog.setCancelable(false);
    dialog.setCanceledOnTouchOutside(false);

    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);
7
Pranav Mittal

Depuis l'API 8, FILL_PARENT est obsolète. Utilisez plutôt MATCH_PARENT.

params.height = LayoutParams.MATCH_PARENT;
0
Miguel Rivero