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>
出于某种原因,对话框只有足够宽的文本input字段大约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的解决scheme工作,但只有在调用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;