Java Android中的ScrollView落后于按钮
为什么滚动视图在按钮后面?我希望scrollview根据设备的不同在高度上伸展,但无法让它工作,因为它总是在按钮后面Java Android中的ScrollView落后于按钮,java,android,android-scrollview,Java,Android,Android Scrollview,为什么滚动视图在按钮后面?我希望scrollview根据设备的不同在高度上伸展,但无法让它工作,因为它总是在按钮后面 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/detail_view" style="@style/DetailView">
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/detail_view"
style="@style/DetailView">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >
<TextView
style="@style/TextView"
android:id="@+id/textview_message_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">
</TextView>
<TextView
style="@style/TextView"
android:id="@+id/textview_message_date"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">
</TextView>
<ScrollView
android:id="@+id/scrollview_message_text"
android:layout_height="wrap_content"
android:paddingBottom="20dip"
android:layout_width="fill_parent">
<TextView
style="@style/TextView"
android:id="@+id/textview_message_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TextView>
</ScrollView>
</LinearLayout>
<LinearLayout style="@style/DetailView.Buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
style="@style/Button"
android:layout_marginTop="5dip"
android:id="@+id/button_view_file"
android:text="@string/viewfile"/>
</LinearLayout>
</RelativeLayout>
为什么滚动视图在按钮后面
因为它是布局中的第一个,所以可以使用
relativelayout
和FrameLayout
来提供Z排序,因此布局中后面的每个子项都具有更高的Z值,所以它会上升。添加android:layout\u lower=“@id/scrollview\u message\u text”
到您的最后一条直线布局或在其中排列视图时,请记住RelativeLayout的这一特性。之所以发生这种情况,是因为您使用相对布局作为根布局。因此,两个布局放置在同一位置,但按钮布局在scrollview之后声明,因此显示在scrollview上方
如果在scrollview之前定义按钮,则会出现相反的情况
因此,您应该如下所示定义它,以实现您想要的
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/detail_view"
style="@style/DetailView">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_above="@id/layout_bottom"
android:orientation="vertical" >
<TextView
style="@style/TextView"
android:id="@+id/textview_message_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">
</TextView>
<TextView
style="@style/TextView"
android:id="@+id/textview_message_date"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">
</TextView>
<ScrollView
android:id="@+id/scrollview_message_text"
android:layout_height="wrap_content"
android:paddingBottom="20dip"
android:layout_width="fill_parent">
<TextView
style="@style/TextView"
android:id="@+id/textview_message_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TextView>
</ScrollView>
</LinearLayout>
<LinearLayout
android:id="@+id/layout_bottom"
style="@style/DetailView.Buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
style="@style/Button"
android:layout_marginTop="5dip"
android:id="@+id/button_view_file"
android:text="@string/viewfile"/>
</LinearLayout>
</RelativeLayout>
到包含滚动视图的布局
使用这两种方法将使按钮粘在布局的底部,而顶部布局将获得所有剩余高度
祝你好运这是我想你要找的东西的工作副本 1:将按钮移动到相对布局的顶部(添加id) android:layout\u alignParentBottom=“true”
2:添加包含滚动条的布局更改宽度和高度以匹配父级
但是(关键)在上面添加android:layout_=“@id/buttons”
因此,把所有这些放在一起:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/detail_view"
>
<!-- Buttons at the top of layout but aligned to the bottom -->
<LinearLayout android:id="@+id/buttons"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginTop="5dip"
android:id="@+id/button_view_file"
android:text="Button"/>
</LinearLayout>
<!-- Linear layout to fill screen, but assigned to layout above the buttons -->
<LinearLayout
android:layout_above="@id/buttons"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/textview_message_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">
</TextView>
<TextView
android:id="@+id/textview_message_date"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">
</TextView>
<ScrollView
android:id="@+id/scrollview_message_text"
android:layout_height="wrap_content"
android:paddingBottom="20dip"
android:layout_width="fill_parent">
<TextView
android:id="@+id/textview_message_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TextView>
</ScrollView>
</LinearLayout>
</RelativeLayout>
我删除了这些样式,这样我就可以在布局中看到它,并确保在发布之前能够正常工作。希望这有帮助
相对布局允许您将元素层叠在一起。因此,如果这不是您想要的,您需要使用toLeft、toRight、over、down指令将布局推进到正确的位置。我认为不要留下底部填充。顺便说一句,你不能把按钮放在ScrollView中吗?从发布的代码中,我看不出为什么
查看文件
按钮在它所在的位置。可能是那种风格?哇,真管用。我想这可以在任何显示器上使用。再次感谢!很乐意帮忙,它应该很好用。RelativeLayout比嵌套线性布局灵活得多。只是需要一点时间来适应它。
<LinearLayout android:id="@+id/buttons"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginTop="5dip"
android:id="@+id/button_view_file"
android:text="Button"/>
</LinearLayout>
<LinearLayout
android:layout_above="@id/buttons"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
android:gravity="center"
android:orientation="vertical" >
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/detail_view"
>
<!-- Buttons at the top of layout but aligned to the bottom -->
<LinearLayout android:id="@+id/buttons"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginTop="5dip"
android:id="@+id/button_view_file"
android:text="Button"/>
</LinearLayout>
<!-- Linear layout to fill screen, but assigned to layout above the buttons -->
<LinearLayout
android:layout_above="@id/buttons"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/textview_message_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">
</TextView>
<TextView
android:id="@+id/textview_message_date"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">
</TextView>
<ScrollView
android:id="@+id/scrollview_message_text"
android:layout_height="wrap_content"
android:paddingBottom="20dip"
android:layout_width="fill_parent">
<TextView
android:id="@+id/textview_message_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TextView>
</ScrollView>
</LinearLayout>
</RelativeLayout>