web-dev-qa-db-ja.com

Androidダイアログ幅

ダイアログの幅を制御できないようです。私はそのようなシンプルなレイアウトを持っています `

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

何らかの理由で、ダイアログの幅が11文字程度のテキスト入力フィールドに対して十分なだけです。ダイアログの幅を画面いっぱいにするにはどうすればよいですか?

50
Solid

同じ問題がありました。

次のコードを使用してダイアログをfill_parentにしましたが、正常に機能しました。

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

レイアウト

<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

私は使用しています:

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

最上部のレイアウトで最小幅を設定します。

Android:minWidth="300dp"

例えば:

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

Matthiasが指摘しているように、 ダイアログスタイルのアクティビティウィンドウを取得して画面いっぱいに表示するにはどうすればよいですか? UMARのソリューションは動作しますが、ウィンドウ属性がsetContentView()を呼び出した後にのみ設定されます。

13
Alex Pretzlav

これを試して。わたしにはできる。

    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

API 8 FILL_PARENTは非推奨です。代わりにMATCH_PARENTを使用してください。

params.height = LayoutParams.MATCH_PARENT;
0
Miguel Rivero