Android中的ScrollView无法正常工作

4

我的布局中的ScrollView无法工作。这个问题可能很傻,但我已经浪费了一个小时。

以下是我的XML布局:

 <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="1100dp"
    android:layout_height="1500dp"
    android:fillViewport="true"
    android:background="#f7f7f7"
    android:layout_weight="1"
    android:orientation="vertical"
    android:padding="25dp" >

<LinearLayout
    android:id="@+id/container"
    android:layout_width="1100dp"
    android:layout_height="fill_parent" 
    android:orientation="vertical">

    <TextView
        android:id="@+id/account_heading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="10dp"
        android:text="ACCOUNT"
        android:textColor="#f44b3b"
        android:textSize="18dp" />

    <LinearLayout
        android:layout_width="900dp"
        android:layout_height="2dp"
        android:layout_marginBottom="10dp"
        android:background="#f44b3b" >
    </LinearLayout>

    <RelativeLayout
        android:layout_width="1100dp"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="10dp"
            android:text="Email"
            android:textColor="#333333"
            android:textSize="22dp" />

        <EditText
            android:id="@+id/email"
            android:layout_width="500dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="300dp"
            android:layout_toRightOf="@+id/textView1"
            android:ems="10"
            android:inputType="textEmailAddress" >
        </EditText>
    </RelativeLayout>

    <LinearLayout
        android:layout_width="900dp"
        android:layout_height="1dp"
        android:layout_marginBottom="10dp"
        android:background="#c6c6c6" >
    </LinearLayout>

    <RelativeLayout
        android:layout_width="1100dp"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/change_password"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="10dp"
            android:text="Change Password"
            android:textColor="#333333"
            android:textSize="22dp" />

        <EditText
            android:id="@+id/change_password_et"
            android:layout_width="500dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="170dp"
            android:layout_toRightOf="@+id/change_password"
            android:ems="10"
            android:inputType="text" >
        </EditText>
    </RelativeLayout>

    <LinearLayout
        android:layout_width="900dp"
        android:layout_height="1dp"
        android:layout_marginBottom="10dp"
        android:background="#c6c6c6" >
    </LinearLayout>

    <RelativeLayout
        android:layout_width="1100dp"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/facebook"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="10dp"
            android:text="Facebook"
            android:textColor="#333333"
            android:textSize="22dp" />

        <EditText
            android:id="@+id/facebook_et"
            android:layout_width="500dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="255dp"
            android:layout_toRightOf="@+id/facebook"
            android:ems="10"
            android:inputType="text" >
        </EditText>
    </RelativeLayout>

    <LinearLayout
        android:layout_width="900dp"
        android:layout_height="1dp"
        android:layout_marginBottom="10dp"
        android:background="#c6c6c6" >
    </LinearLayout>

    <RelativeLayout
        android:layout_width="1100dp"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/twitter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="10dp"
            android:text="Twitter"
            android:textColor="#333333"
            android:textSize="22dp" />

        <EditText
            android:id="@+id/twitter_et"
            android:layout_width="500dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="280dp"
            android:layout_toRightOf="@+id/twitter"
            android:ems="10"
            android:inputType="text" >
        </EditText>
    </RelativeLayout>

    <LinearLayout
        android:layout_width="900dp"
        android:layout_height="1dp"
        android:layout_marginBottom="10dp"
        android:background="#c6c6c6" >
    </LinearLayout>

    <TextView
        android:id="@+id/profile_heading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:text="Heading"
        android:textColor="#f44b3b"
        android:textSize="18dp" />

    <LinearLayout
        android:layout_width="900dp"
        android:layout_height="2dp"
        android:layout_marginBottom="10dp"
        android:background="#f44b3b" >
    </LinearLayout>

    <RelativeLayout
        android:layout_width="1100dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp" >

        <TextView
            android:id="@+id/Gender"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="10dp"
            android:text="Gender"
            android:textColor="#333333"
            android:textSize="22dp" />

        <Spinner
            android:id="@+id/gender_spinner"
            android:layout_width="500dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="280dp"
            android:layout_toRightOf="@+id/Gender" />
    </RelativeLayout>

    <LinearLayout
        android:layout_width="900dp"
        android:layout_height="1dp"
        android:layout_marginBottom="10dp"
        android:background="#c6c6c6" >
    </LinearLayout>

    <RelativeLayout
        android:layout_width="1100dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp" >

        <TextView
            android:id="@+id/Birthday"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="170dp"
            android:text="Birthday"
            android:textColor="#333333"
            android:textSize="22dp" />

        <Button
            android:id="@+id/setDate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/Birthday"
            android:onClick="showDatePickerDialog"
            android:text="Pick date" />

        <EditText
            android:id="@+id/birthdayet"
            android:layout_width="500dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="100dp"
            android:layout_toRightOf="@+id/Birthday"
            android:ems="10"
            android:inputType="text"
            android:text="Birthday"
            android:textColor="#f44b3b"
            android:textSize="18dp" >
        </EditText>
    </RelativeLayout>

    <LinearLayout
        android:layout_width="900dp"
        android:layout_height="1dp"
        android:layout_marginBottom="10dp"
        android:background="#c6c6c6" >
    </LinearLayout>

    <RelativeLayout
        android:layout_width="1100dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp" >

        <TextView
            android:id="@+id/zipcode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="10dp"
            android:text="Zip Code"
            android:textColor="#333333"
            android:textSize="22dp" />

        <EditText
            android:id="@+id/zip"
            android:layout_width="500dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="270dp"
            android:layout_toRightOf="@+id/zipcode"
            android:ems="10"
            android:inputType="number" >
        </EditText>
    </RelativeLayout>

    <LinearLayout
        android:layout_width="900dp"
        android:layout_height="1dp"
        android:layout_marginBottom="10dp"
        android:background="#c6c6c6" >
    </LinearLayout>

    <TextView
        android:id="@+id/heading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:text="COOL"
        android:textColor="#f44b3b"
        android:textSize="18dp" />

    <LinearLayout
        android:layout_width="900dp"
        android:layout_height="2dp"
        android:layout_marginBottom="8dp"
        android:background="#f44b3b" >
    </LinearLayout>      

</LinearLayout>

</ScrollView>

不工作是什么意思?出了什么问题吗?你在XML中添加了</Scrollview>吗? - MysticMagicϡ
4
请使用 android:layout_width="fill_parent" android:layout_height="fill_parent",并删除 layout weight。 - Rahul Baradia
你想要水平滚动还是垂直滚动? - SolArabehety
@TechEnd,它运行得很好。太棒了。谢谢!我该如何接受这个答案? :) - intrepidkarthi
你不能将评论作为答案接受。最好是发布你的答案并接受它。 - Rahul Baradia
7个回答

4

移除

android:layout_weight="1"

android:orientation="vertical" 

从滚动视图中移除,并将布局高度设置为fill_parent
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="1100dp"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:background="#f7f7f7"
    android:padding="25dp" >

1

将此内容替换为 ScrollView 属性内的内容

android:layout_width="fill_parent"
android:layout_height="fill_parent"

并且也被移除了

android:layout_weight ="1"

这很好用。感谢@TechEnd。


1

你只需要在ScrollView属性中进行以下更改:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:background="#f7f7f7"
android:layout_weight="1"
android:orientation="vertical"
android:padding="25dp" >

1

从此Activity的清单中删除:"android:windowSoftInputMode="adjustPan"

它一定会起作用。


请查看以下解决方案,可能会有所帮助:https://dev59.com/EVoU5IYBdhLWcg3wi3aX#59549588 - DragonFire

0
在我的情况下,ListView 将持有一个适配器来填充一个垂直堆叠的按钮。我手动计算并分配了 ListView 的高度(以使所有按钮都扩展)。我遇到的滚动问题是,在 ScrollView 中使用 ListView(滚动发生时,如果我点击 ListView 边界外部并尝试滚动,则不会发生滚动。而如果我尝试通过点击 ListView 边界内部来滚动,则会发生滚动)。我查看了多个 stackoverflow 答案/Android 文档,并尝试了一些自定义 ListView/LinearLayout(带有适配器),但最终都没有起作用。然后,我理解了逻辑,并使 ListView 具有 NestedScrolling 实现,它就像魔法般地工作了。
我只是对我的代码进行了这个更改。
myListView.setNestedScrollingEnabled(true);

0

你需要关闭你的

< ScrollView> </ScrollView>

我没有看到它,或者你只是忘记发布了吗?


0
          <ScrollView
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:fadeScrollbars="false"
                android:scrollbarStyle="insideInset"
                android:scrollbarThumbVertical="@drawable/scrollview_thumb"
                android:scrollbarTrackVertical="@drawable/custom_scroll_style">
            <EditText
                android:id="@+id/input_customer_email"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:clickable="false"
                android:longClickable="false"
                android:focusable="false"
                android:inputType="textMultiLine"
                android:hint="Customer's Email Address" />
            </ScrollView>

1
欢迎来到SO!当您回答一个代码问题时,请尽量解释一下。在这种情况下,还有5个答案,所以请展示您的优点。 - David García Bodego

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接