我使用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,但没有显示带按钮的布局......所以我甚至无法按下按钮。
答案 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"
在每个标签上只需要第一个标签