重量不适合我的 ScrollView

ScrollView with weight not working for me

我有一个父线性布局,里面有两个滚动视图,我在滚动视图中使用权重属性,但这对我不起作用,我的意思是它不提供任何滚动。这是代码,我怎样才能让它工作?

LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="2">

        <ScrollView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:scrollbars="horizontal"
            android:fillViewport="true"
            android:layout_weight="1"
            android:layout_marginRight="8dp">
        <LinearLayout
            android:id="@+id/linearLayoutSizes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginLeft="@dimen/product_detail_items_margin_left"
            >
        </LinearLayout>
        </ScrollView>

        <ScrollView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:scrollbars="horizontal"
            android:fillViewport="true"
            android:layout_weight="1"
            android:layout_marginLeft="8dp">
        <LinearLayout
            android:id="@+id/linearLayoutColors"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <RadioGroup
                android:id="@+id/colorsGroup"
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

            </RadioGroup>
         </LinearLayout>
        </ScrollView>
    </LinearLayout>

查看以下代码是否适合您:

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

    android:orientation="horizontal"
    android:weightSum="2">

    <ScrollView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_marginRight="8dp"
        android:layout_weight="1"
        android:fillViewport="true"
        android:scrollbars="horizontal">

        <LinearLayout
            android:id="@+id/linearLayoutSizes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"></LinearLayout>
    </ScrollView>

    <ScrollView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="8dp"
        android:layout_weight="1"
        android:fillViewport="true"
        android:scrollbars="horizontal">

        <LinearLayout
            android:id="@+id/linearLayoutColors"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <RadioGroup
                android:id="@+id/colorsGroup"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

            </RadioGroup>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

由于您正在为 scrollView 固定重量,它认为数据永远不应超过高度,因此它不会滚动。只需用如下所示的框架布局覆盖滚动视图并尝试。

    LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="2">

   <FrameLayout android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" >

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="horizontal"
        android:fillViewport="true"
        android:layout_weight="1"
        android:layout_marginRight="8dp">
    <LinearLayout
        android:id="@+id/linearLayoutSizes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginLeft="@dimen/product_detail_items_margin_left"
        >
    </LinearLayout>

    </ScrollView>
   <FrameLayout>

     <FrameLayout android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" >

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="horizontal"
        android:fillViewport="true"
        android:layout_weight="1"
        android:layout_marginLeft="8dp">
    <LinearLayout
        android:id="@+id/linearLayoutColors"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioGroup
            android:id="@+id/colorsGroup"
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

        </RadioGroup>
     </LinearLayout>

    </ScrollView>
  </FrameLayout>
</LinearLayout>

看看这是否有效。

我觉得你的 XML 不错,那你为什么不尝试在布局中添加几个按钮或图像并尝试滚动它们呢?

也不要忘记将这行代码添加到 XML 文件的最顶部:

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

告诉我你过得怎么样。

试验了您的代码并发现了问题。

从你的代码来看,你想要的确实是一个水平滚动条。但是您使用的是默认情况下垂直滚动的普通 ScrollView。考虑将 ScrollView 更改为 Horizo​​ntalScrollView。

即来自

<ScrollView
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:scrollbars="horizontal"
    android:fillViewport="true"
    android:layout_weight="1"
    android:layout_marginRight="8dp">

<HorizontalScrollView
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:scrollbars="horizontal"
    android:fillViewport="true"
    android:layout_weight="1"
    android:layout_marginRight="8dp">

改变你的滚动视图。干杯!