ScrollView按下View下方,没有滚动条

时间:2015-12-24 10:13:54

标签: android android-layout scrollview

我有一个ImageView,一个TextView和另一个'ImageView',以垂直LinearLayout分组。
TextView应该包含长文本,因此我将其包装在ScrollView中。第一个ImageView应该是100dp高度,第三个100dp高度。中间TextView应填充整个可用空间,如果文本太长,则应显示滚动条 整个布局是父布局的一部分,因此此布局只有部分屏幕可用。 为了演示它,我将LinearLayout高度设置为265dp。
问题是整个文本出现,滚动条没有出现,第三个底部的ImageView高度被压扁。
我正在关注this帖子,这是截图。

enter image description here

我的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="265dp"
android:background="#BDBDBD"
android:orientation="vertical">


<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#FFFF00" />


<ScrollView
    android:id="@+id/SCROLLER_ID"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scrollbars="vertical"
    android:fillViewport="true">

    <TextView
        android:id="@+id/TEXT_STATUS_ID"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1.0"
        android:text="bla\nbla\nbla\nbla\nbla\nbla\nbla"/>

</ScrollView>


<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#FF00FF" />

</LinearLayout>

3 个答案:

答案 0 :(得分:0)

试试这个布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#BDBDBD"
android:orientation="vertical">

<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#FFFF00" />

<ScrollView
    android:id="@+id/SCROLLER_ID"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1">

    <TextView
        android:id="@+id/TEXT_STATUS_ID"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="bla\nbla\nbla\nbla\nbla\nbla\nbla"/>

</ScrollView>

<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#FF00FF" />

</LinearLayout>

答案 1 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="265dp"
    android:background="#BDBDBD" >

    <ImageView
        android:id="@+id/imgtop"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_alignParentTop="true"
        android:background="#FFFF00" />

    <ImageView
        android:id="@+id/imgbottom"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_alignParentBottom="true"
        android:background="#FF00FF" />

    <ScrollView
        android:id="@+id/SCROLLER_ID"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/imgbottom"
        android:layout_below="@id/imgtop"
        android:fillViewport="true"
        android:scrollbars="vertical" >

        <TextView
            android:id="@+id/TEXT_STATUS_ID"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="bla\nbla\nbla\nbla\nbla\nbla\nbla"
            android:textColor="@color/black" />
    </ScrollView>

</RelativeLayout>

答案 2 :(得分:0)

<ScrollView
android:id="@+id/SCROLLER_ID"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:fillViewport="true">

  <TextView
    android:id="@+id/TEXT_STATUS_ID"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1.0"
    android:text="bla\nbla\nbla\nbla\nbla\nbla\nbla"/>

</ScrollView>
  1. 您分配给TextView的权重没有任何意义:它位于ScrollView内(扩展FrameLayout,而不是LinearLayout),即使它确实如此有一个意思,它不是你想要的 - 它只是说它应占用ScrollView
  2. 内的大部分空间
  3. 您提供了ScrollView的{​​{1}} height - 在您的情况下,这意味着它将占据wrap_content的全部高度 - 因此如果TextView } height大于屏幕的高度 - 它将占据屏幕的所有高度 - 因此您的上一个TextView将没有足够的空间。
  4. 您可以使用3种(或更多种)方法解决它

    1. TextView
    2. 指定固定高度
    3. ScrollView(也可能是ScrollView的其余部分)
    4. 分配权重
    5. 使用新的PercentRelativeLayout。只需指定要捕获的Views的高度百分比。