警报对话框的button被切断

我有一个警告对话框,当有人触摸一个特定的button时开始。 警报对话框包含一个由布局xml文件定义的视图。 此布局包含多个控件,如checkbox,编辑文本字段…这些控件都位于scrool视图中,以便您可以滚动浏览内容(如果整个内容不适合在屏幕上)。

现在的问题是,当我启动这个警报对话框时,底部的button被切断屏幕。 尽pipescrool条正在工作,而且我可以滚动浏览警报对话框的内容,但警报对话框的button有时并不完全可见。

这意味着:有时,一切都很好,我可以看到警报对话框的button,有时候是奇怪的原因,button被切断。 我认为这是一个问题的观点是大的警报对话框,并按下更多的button。 例如,该视图包含一个编辑文本控件。 如果我input我的名字,一切都很好。 但是如果我在这个编辑文本中添加一个新行,这些button开始被切断一点。 我错了什么? 我认为滚动视图将处理我的视图的超大尺寸,以便警报对话适合屏幕。 我的应用程序始终处于肖像模式。

视图的代码:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scrollView2" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="5dp" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/bitteeinstellungenwaehlen" /> <EditText android:id="@+id/edtTeam1" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="@string/hteam1" android:text="Christoph" > <requestFocus /> </EditText> <EditText android:id="@+id/edtTeam2" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="@string/hteam2" android:text="Lea" /> <EditText android:id="@+id/edtTeam3" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="@string/hteam3" android:text="Ludwig" /> <EditText android:id="@+id/edtTeam4" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="@string/hteam4" android:text="Anja" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/weitereeinstellungen" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <CheckBox android:id="@+id/chkModerationMode" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/moderationsmodus" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:text="@string/info" /> </LinearLayout> <CheckBox android:id="@+id/chkPassOver" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="@string/weitergeben" /> <CheckBox android:id="@+id/chkBlackScreen" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/blankscreen" /> </LinearLayout> </ScrollView> 

这就是我如何启动警报对话框:

  final AlertDialog.Builder alert = new AlertDialog.Builder(QuizEditor.this); alert.setTitle(getString(R.string.speichernUndVorschau) + "..."); alert.setMessage(""); LayoutInflater inflater = LayoutInflater.from(QuizEditor.this); final View layFrage = inflater.inflate(R.layout.layoutquizsettings,null); alert.setView(layFrage); final CheckBox chkModeration = (CheckBox) layFrage.findViewById(R.id.chkModerationMode); final CheckBox chkPassOver = (CheckBox) layFrage.findViewById(R.id.chkPassOver); final CheckBox chkBlackScreen = (CheckBox) layFrage.findViewById(R.id.chkBlackScreen); final EditText edtTeam1 = (EditText) layFrage.findViewById(R.id.edtTeam1); final EditText edtTeam2 = (EditText) layFrage.findViewById(R.id.edtTeam2); final EditText edtTeam3 = (EditText) layFrage.findViewById(R.id.edtTeam3); final EditText edtTeam4 = (EditText) layFrage.findViewById(R.id.edtTeam4); alert.setNeutralButton(getString(R.string.speichernUndVorschau), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { } }); alert.setNegativeButton(getString(R.string.abbrechen), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // Canceled. } }); final AlertDialog dialog2 = alert.create(); dialog2.setOnShowListener(new OnShowListener() { @Override public void onShow(DialogInterface dialog) { // TODO Auto-generated method stub Button btnStarten = (Button) dialog2.getButton(AlertDialog.BUTTON_NEUTRAL); btnStarten.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ArrayList<String> teams = new ArrayList<String>(); String team1 = edtTeam1.getText().toString().trim(); String team2 = edtTeam2.getText().toString().trim(); String team3 = edtTeam3.getText().toString().trim(); String team4 = edtTeam4.getText().toString().trim(); if(team1.length() > 0) teams.add(team1); if(team2.length() > 0) teams.add(team2); if(team3.length() > 0) teams.add(team3); if(team4.length() > 0) teams.add(team4); if(teams.size() == 0) { Toast.makeText(QuizEditor.this, getString(R.string.keinteameingegeben), Toast.LENGTH_SHORT).show(); } else { // Quiz starten dialog2.dismiss(); Intent myIntent; if(chkBlackScreen.isChecked()) { myIntent = new Intent(QuizEditor.this, BlackScreen.class); } else // Direkt das Quiz starten { myIntent = new Intent(QuizEditor.this, Quiz.class); } myIntent.putStringArrayListExtra("teams", teams); myIntent.putExtra("moderation", chkModeration.isChecked()); myIntent.putExtra("passover", chkPassOver.isChecked()); myIntent.putExtra("filename", filename); QuizEditor.this.startActivity(myIntent); } } }); } }); dialog2.show(); // dialog2.getWindow().setLayout(LayoutParams.WRAP_CONTENT, 300); 

我很抱歉德文的话。 在图像中你可以看到问题。 不幸的是我不能上传我制作的截图

Solutions Collecting From Web of "警报对话框的button被切断"

将EditText行设置为1.还要将外部LinearLayout设置为fill_parent。

只要使所有的EditText属性android:singleLine="true" ,然后尝试testing。

这个问题已经在评论中得到了解决,但我会为完整性添加一个答案,并表明它对我也有效。

对于具有自定义视图的.setMessage ,请勿使用.setMessage行。 在我的项目中删除以下行导致button停止剪辑。

 .setMessage("This is my message")