ダイアログの幅を制御できないようです。私はそのようなシンプルなレイアウトを持っています `
<?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文字程度のテキスト入力フィールドに対して十分なだけです。ダイアログの幅を画面いっぱいにするにはどうすればよいですか?
同じ問題がありました。
次のコードを使用してダイアログを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>
私は使用しています:
getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
最上部のレイアウトで最小幅を設定します。
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>
Matthiasが指摘しているように、 ダイアログスタイルのアクティビティウィンドウを取得して画面いっぱいに表示するにはどうすればよいですか? UMARのソリューションは動作しますが、ウィンドウ属性がsetContentView()を呼び出した後にのみ設定されます。
これを試して。わたしにはできる。
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);
API 8 FILL_PARENTは非推奨です。代わりにMATCH_PARENTを使用してください。
params.height = LayoutParams.MATCH_PARENT;