java - ScrollView 落后于 Android 中的按钮

标签 java android android-scrollview

为什么 ScrollView 在按钮后面?我希望 ScrollView 根据设备拉伸(stretch)高度,但无法让它工作,因为它总是在按钮后面。

enter image description here

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

最佳答案

这是我认为您正在寻找的工作副本

1: 将按钮移动到相关布局的顶部(添加了一个 id ) android:layout_alignParentBottom="真"

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

2:在包含滚动的布局中添加更改宽度和高度以匹配父级 但是(关键)添加 android:layout_above="@id/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" >

所以把它们放在一起:

<?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、above、below 指令将布局推到正确的位置。

关于java - ScrollView 落后于 Android 中的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27821820/

相关文章:

android - 如何使父 View 和 subview 都可滚动

android - 如何使 ScrollView 中的某些小部件像标题一样不可滚动或粘在屏幕顶部

java - 为什么 AKKA actor postStop 的返回类型不为 void?

java - JSF 中的托管 bean

java - Android从json中获取数据并排序

android - 隐藏的溢出不适用于 Android

android - Android 应用程序启动时的 AlertDialog

java - 在 Spring 应用程序中的另一个中包含 Velocity 模板

android - 如何在android 模拟器中运行.swf 文件?

android - 带有 scrollView 的 OSMDroid MapView 气球