Android滚动问题

Posted

技术标签:

【中文标题】Android滚动问题【英文标题】:Android scroll issue 【发布时间】:2017-12-27 06:05:38 【问题描述】:

我设计了一个顶部带有徽标图像视图和标题的屏幕,高度约为 80 dp。然后一个框架布局垂直保持在它旁边。框架布局动态加载片段。该片段包含一个带有输入字段的滚动视图。问题来了,当焦点转到编辑文本时,整个屏幕向上滚动。我只希望片段中的滚动视图滚动。顶部区域必须固定。请仔细阅读为 Holder Activity 及其片段提供的布局设计。 我只希望滚动视图缩小到键盘上方。任何人都可以帮助我,因为我是 android 开发的新手。

HolderActivity 布局

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

<ImageView
    android:id="@+id/patternImageView"
    style="@style/WFImageViewPatternBG"/>

<ImageView
    android:id="@+id/titleImageView"
    style="@style/WFImageViewTitle"
    android:layout_centerHorizontal="true"/>

<TextView
    android:id="@+id/fertilityTextView"
    style="@style/WFTextStyleFertilityTitle"
    android:layout_below="@id/titleImageView"
    />

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragmentPlaceholder"
    android:layout_
    android:layout_
    android:layout_below="@id/fertilityTextView"
    android:layout_marginTop="20dp">

    <!-- Fragment will go here eventually, but it's not added in the layout -->

</FrameLayout>

片段活动布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context="com.ideasurge.winfertility.CreateAccountInputFragment">

<ScrollView
    android:id="@+id/inputScrollView"
    android:layout_
    android:layout_
    android:layout_above="@+id/createAcctNextBtn">

    <RelativeLayout
        android:layout_
        android:layout_>

        <TextView
            android:id="@+id/createAcctTitleTextView"
            style="@style/WFTextStyleBoldPinkTitle"
            android:text="Create An Account" />

        <EditText
            android:id="@+id/first_name_edit_txt"
            style="@style/WFEditTextStyle"
            android:hint="First Name"
            android:background="@drawable/rounded_border_pink"
            android:layout_marginTop="20dp"
            android:layout_below="@+id/createAcctTitleTextView" />

        <EditText
            android:id="@+id/last_name_edit_txt"
            style="@style/WFEditTextStyle"
            android:hint="Last Name"
            android:background="@drawable/rounded_border_pink"
            android:layout_below="@+id/first_name_edit_txt" />

        <EditText
            android:id="@+id/email_pwd_edit_txt"
            style="@style/WFEditTextStyle"
            android:hint="Email Address"
            android:background="@drawable/rounded_border_pink"
            android:layout_below="@+id/last_name_edit_txt" />

        <EditText
            android:id="@+id/phone_no_edit_txt"
            style="@style/WFEditTextStyle"
            android:hint="Phone Number"
            android:background="@drawable/rounded_border_pink"
            android:layout_below="@+id/email_pwd_edit_txt" />

        <EditText
            android:id="@+id/create_pwd_edit_txt"
            style="@style/WFEditTextStyle"
            android:hint="Create Password"
            android:background="@drawable/rounded_border_pink"
            android:layout_below="@+id/phone_no_edit_txt" />

        <EditText
            android:id="@+id/dob_edit_txt"
            style="@style/WFEditTextStyle"
            android:hint="Date of Birth"
            android:background="@drawable/rounded_border_pink"
            android:layout_below="@+id/create_pwd_edit_txt" />

        <EditText
            android:id="@+id/gender_edit_txt"
            style="@style/WFEditTextStyle"
            android:hint="Gender"
            android:background="@drawable/rounded_border_pink"
            android:layout_below="@+id/dob_edit_txt" />

        <TextView
            android:id="@+id/companySectionTitle"
            style="@style/WFTextStyleSectionPinkTitle"
            android:text="Your company may provide Fertility Benefits."
            android:layout_marginLeft="40dp"
            android:layout_marginRight="40dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="20dp"
            android:layout_below="@+id/gender_edit_txt"/>

        <EditText
            android:id="@+id/company_edit_txt"
            style="@style/WFEditTextStyle"
            android:hint="Name of Company"
            android:background="@drawable/rounded_border_pink"
            android:layout_below="@+id/companySectionTitle" />

        <EditText
            android:id="@+id/insurance_id_edit_txt"
            style="@style/WFEditTextStyle"
            android:hint="Insurance Subscriber ID"
            android:background="@drawable/rounded_border_pink"
            android:layout_below="@+id/company_edit_txt" />

    </RelativeLayout>

</ScrollView>

<Button
    android:id="@+id/createAcctNextBtn"
    style="@style/WFButtonStylePink"
    android:text="NEXT"
    android:layout_marginTop="20dp"
    android:layout_marginBottom="20dp"
    android:layout_alignParentBottom="true"
    />

【问题讨论】:

【参考方案1】:

这可能会有所帮助:

android:windowSoftInputMode="adjustPan"

像这样在清单活动标签中使用它:

<activity  
    android:name=".Activity"
    android:windowSoftInputMode="adjustPan" />

在这里你可以使用其他选项来代替adjustpan

【讨论】:

以上是关于Android滚动问题的主要内容,如果未能解决你的问题,请参考以下文章

Android滚动问题

Android 滚动分页

Android隐藏列表视图滚动条?

键盘感知滚动视图Android问题

同步 ScrollView 滚动位置 - android

需要水平滚动(Android)