Android:在ScrollView中具有权重的LinearLayout

时间:2016-07-25 15:54:13

标签: java android xml scrollview android-linearlayout

我的ScrollView遇到了这个令人沮丧的问题,这是我的层次结构:

ScrollView (Vertical)
    LinearLayout (Vertical)
        ImageView weight= 0.5
        Whatever weight= 0.1
        Whatever weight= 0.2
        Whatever weight= 0.2

如果我删除ScrollView(并将LinearLayout作为主项),这适用于任何图像:图像占用屏幕尺寸的50%,其他视图占用其余部分。

然而,当ScrollView在这里时,"权重"如果我的图像太高,则完全忽略参数:图像将执行任何可以适应屏幕宽度的任何内容,然后显然太高,占据屏幕的50%以上。编辑:实际上,所有"重量"属性似乎被忽略了:

没有ScrollView: enter image description here

使用ScrollView: enter image description here

我希望线性布局能够完美贴合而无需滚动。那可能吗 ?我试图改变一些图像选项(scaleType,adjustViewBounds),但我没有设法得到我想要的。

这是整个xml:

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">

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


    <ImageView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.5"
        android:adjustViewBounds="true"
        android:src="@drawable/testing" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.2"
        android:text="I'M A TEST" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.1"
        android:text="I'M A TEST" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.2"
        android:text="I'M A TEST" />

</LinearLayout>
</ScrollView>

注意:我需要ScrollView,因为我使用的是PullToRefresh ScrollView

3 个答案:

答案 0 :(得分:3)

也许为时已晚,但可以通过向android:fillViewport="true"添加ScrollView来解决您的问题:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true" >

答案 1 :(得分:2)

我通过添加父线性布局(以及主相对布局)来解决它:

    ScrollView (Vertical)
        LineaLayout
            LinearLayout (Vertical)
                ImageView weight= 0.5
                Whatever weight= 0.1
                Whatever weight= 0.2
                Whatever weight= 0.2

以编程方式将子LinearLayout的高度设置为childLinearLayout.getLayoutParams().height

的屏幕高度

答案 2 :(得分:-1)

尝试这种方式。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:adjustViewBounds="true"
        android:padding="50dp"
        android:src="@drawable/ic_launcher" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:padding="20dp"
        android:text="I&apos;M A TEST" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:padding="20dp"
        android:text="I&apos;M A TEST" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:padding="10dp"
        android:text="I&apos;M A TEST" />
</LinearLayout>
</ScrollView>