Android使对话框可滚动

时间:2013-10-01 06:38:38

标签: android layout dialog scrollview scrollable

当用户点击按钮时,我正在显示一个对话框。当对话框出现并单击EditText以输入某些文本时,您将无法再看到底部按钮(和最低的EditText)。因此,您必须单击键盘,然后选择按钮或EditText。我现在搜索了一段时间的答案,但我找不到它。

所以:我如何使我的对话框可滚动?显然我的代码没有做到这一点:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical"
    android:scrollbars="vertical"
    android:scrollbarAlwaysDrawVerticalTrack="true">

<EditText         
   android:id="@+id/addKlantNaam"
   android:textSize="20sp"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:hint="@string/klantNaam" 
   />

<EditText         
   android:id="@+id/addKlantLocatie"
   android:textSize="20sp"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:hint="@string/klantLocatie" 
   />

<TextView
    android:id="@+id/scheidenDoorKomma"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="16sp"
    android:text="@string/scheidenDoorKomma"/>

<EditText         
   android:id="@+id/addFabrieken"
   android:textSize="20sp"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:hint="@string/fabrieken" 
   />

 <EditText        
   android:id="@+id/addMachines"
   android:textSize="20sp"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:hint="@string/machines" 
   />

 <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" >

    <Button
        android:id="@+id/dialogAnnuleren"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"        
        android:text="@string/annuleren"
        android:textSize="22sp" />

    <Button
        android:id="@+id/dialogToevoegen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"   
        android:layout_toRightOf="@+id/dialogAnnuleren"     
        android:textSize="22sp"
        android:text="@string/toevoegen"/>
  </RelativeLayout>

</LinearLayout>

这就是我呼吁对话的方式:

btnAdd.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View arg0) {

            // custom dialog
            dialog = new Dialog(context);
            dialog.setContentView(R.layout.addklant_layout);
            dialog.setTitle("Klant toevoegen");

            Button BTNannuleren = (Button) dialog.findViewById(R.id.dialogAnnuleren);
            // if button is clicked, close the custom dialog
            BTNannuleren.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });

            Button BTNtoevoegen = (Button) dialog.findViewById(R.id.dialogToevoegen);
            // if button is clicked, close the custom dialog
            BTNtoevoegen.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    StoreKlantInDatabase task = new StoreKlantInDatabase();     
                        task.execute(urlInsertKlant);
                        dialog.dismiss();
                    }
            });      
            dialog.show();
      }
    });

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

GeertG ...现在我情绪激动:)尝试我发现的链接...它可能会使用滚动视图与多个孩子...我不知道它是否解决了你的问题但... If ScrollView only supports one direct child, how am I supposed to make a whole layout scrollable?

how to add multiple child in horizontal scroll view in android

这些解决方案应该像创建一个包含1个以上孩子的滚动视图一样...它会解决您的问题吗? IDK ...

也请查看

How to hide soft keyboard on android after clicking outside EditText?

但键盘关闭并重新打开对我来说似乎有点合理......不要徘徊太长时间:)

答案 1 :(得分:1)

您所询问的指南是can be found here。如你看到的。有很多方法可以实现你的要求。

除此之外,您可以考虑更改键盘上“Enter”按钮的默认操作以选择下一个EditText,最后在完成后提交表单(read up about it here):

android:imeOptions="actionDone"

答案 2 :(得分:0)

使用LinearLayout Height match_parent。并试着它的工作与否。

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical"
    android:scrollbars="vertical"
    android:scrollbarAlwaysDrawVerticalTrack="true">