Ich kann die Dialogbreite scheinbar nicht steuern. Ich habe so ein einfaches Layout
<?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>
aus irgendeinem Grund ist der Dialog nur für das Texteingabefeld mit einer Breite von ca. 11 Zeichen breit genug. Wie fülle ich den Bildschirm mit der Breite des Dialogfelds?
Ich hatte das gleiche problem.
Ich habe folgenden Code verwendet, um dialog fill_parent zu erstellen, und es hat gut funktioniert.
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);
}
}
layout
<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>
Ich benutze:
getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
Stellen Sie eine minimale Breite im obersten Layout ein.
Android:minWidth="300dp"
Beispielsweise:
<?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>
Wie Matthias ausführt Wie bekomme ich ein Aktivitätsfenster im Dialogstil, um den Bildschirm auszufüllen? UMARs Lösung funktioniert, aber nur, wenn die Fensterattribute NACH dem Aufruf von setContentView () festgelegt wurden.
Versuche dies. Für mich geht das.
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);
Seit API 8 ist FILL_PARENT veraltet. Verwenden Sie stattdessen MATCH_PARENT.
params.height = LayoutParams.MATCH_PARENT;