对话框布局未显示

时间:2011-02-14 11:30:32

标签: android dialog android-layout scrollview android-linearlayout

我使用XML文件来定义向用户显示的Dialog。 我希望能够滚动TextViews和EditTexts,但始终显示OK和Cancel按钮。我无法做到这一点。 这是我的布局文件:

<?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">

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:orientation="vertical" 
            android:scrollbars="vertical"
            android:scrollbarAlwaysDrawVerticalTrack="true">

            <!-- Group Name -->
            <TextView android:id="@+id/group_name_view"
                android:layout_height="wrap_content" 
                android:layout_width="wrap_content"
                android:layout_marginLeft="20dip" 
                android:layout_marginRight="20dip"
                android:text="@string/group_name_view_text" 
                android:gravity="left"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <EditText android:id="@+id/group_name_edit"
                android:layout_height="wrap_content" 
                android:layout_width="fill_parent"
                android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
                android:scrollHorizontally="true" 
                android:autoText="false"
                android:capitalize="none" 
                android:gravity="fill_horizontal"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <!-- Group Description -->
            <TextView android:id="@+id/group_description_view"
                android:layout_height="wrap_content" 
                android:layout_width="wrap_content"
                android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
                android:text="@string/group_description_view_text" 
                android:gravity="left"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <EditText android:id="@+id/group_description_edit"
                android:layout_height="wrap_content" 
                android:layout_width="fill_parent"
                android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
                android:scrollHorizontally="true" 
                android:autoText="false"
                android:capitalize="none" 
                android:gravity="fill_horizontal"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <!-- Access security -->

            <TextView android:id="@+id/access_security_view"
                android:layout_height="wrap_content" 
                android:layout_width="wrap_content"
                android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
                android:text="@string/access_security_view_text" 
                android:gravity="left"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <Spinner android:id="@+id/access_spinner"
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
                android:gravity="fill_horizontal" 
                android:drawSelectorOnTop="true"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <!-- Communications security -->
            <TextView android:id="@+id/communcations_security_view"
                android:layout_height="wrap_content" 
                android:layout_width="wrap_content"
                android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
                android:text="@string/communcations_security_view_text"
                android:gravity="left" 
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <Spinner android:id="@+id/communications_spinner"
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
                android:gravity="fill_horizontal" 
                android:drawSelectorOnTop="true"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <!-- User -->
            <TextView android:id="@+id/username_view"
                android:layout_height="wrap_content" 
                android:layout_width="wrap_content"
                android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
                android:text="@string/username_view_text" 
                android:gravity="left"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <EditText android:id="@+id/username_edit" 
               android:enabled="false"
                android:layout_height="wrap_content" 
                android:layout_width="fill_parent"
                android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
                android:scrollHorizontally="true" 
                android:autoText="false"
                android:capitalize="none" 
                android:gravity="fill_horizontal"
                android:textAppearance="?android:attr/textAppearanceMedium" />
            <!-- Password -->
            <TextView android:id="@+id/password_view"
                android:layout_height="wrap_content" 
                android:layout_width="wrap_content"
                android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
                android:text="@string/password_view_text" 
                android:gravity="left"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <EditText android:id="@+id/password_edit" 
            android:enabled="false"
                android:layout_height="wrap_content" 
                android:layout_width="fill_parent"
                android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
                android:scrollHorizontally="true" 
                android:autoText="false"
                android:capitalize="none" 
                android:gravity="fill_horizontal"
                android:password="true" android:textAppearance="?android:attr/textAppearanceMedium" />

        </LinearLayout>
    </ScrollView>
    <LinearLayout android:layout_height="wrap_content"
        android:layout_width="fill_parent" >
        <Button android:layout_height="wrap_content"
                 android:layout_width="wrap_content" 
                 android:text="@string/ok_text"
                 android:layout_weight="1" android:id="@+id/group_creator_ok_button">
       </Button>
        <Button android:layout_height="wrap_content"
                 android:layout_width="wrap_content" 
                 android:text="@string/cancel_text"
                 android:layout_weight="1" 
                 android:id="@+id/group_creator_cancel_button">
       </Button>
    </LinearLayout>
</LinearLayout>

我已经扩展了Dialog类,所以当调用onCreate时我会调用

setContentView(R.layout.my_layout_file);

它只是向我显示ScrollView,但没有显示带按钮的布局......所以我甚至无法按下按钮。

3 个答案:

答案 0 :(得分:1)

您的滚动视图使用换行内容,因此如果内容大于屏幕,则自然您的按钮不会显示。

尝试使用android:layout_weight为布局元素指定“重要性”。

您可以看到的替代方法是使用<merge> - 标记。

然后你可以这样做:

<merge>
<ScrollView android:layout_height="fill_parent" ... >
 ...
</ScrollView>

<LinearLayout android:layout_height="wrap_content" android:layout_gravity="center|bottom" ...>
  <Button></Button>....
<LinearLayout>

</merge>

答案 1 :(得分:1)

您尚未指定内部LinearLayout的方向。你可以查一下吗?

如果不能解决问题,请尝试使用hierarchyviewer。

答案 2 :(得分:1)

刚刚改变了你的ScrollView高度

<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="380dp">

并且无需编写

xmlns:android="http://schemas.android.com/apk/res/android"

在每个标签上只需要第一个标签