无法滚动到scrollView中的特定视图

时间:2016-11-30 13:48:33

标签: android android-scrollview

我在ScrollView中有几个EditText个。低于EditText一个TextView。当软键盘聚焦于EditText时,我想滚动到上面提到的TextView,所以我确定它也是可见的(它包含EditText的一些信息。)

所以我在EditText添加了一个焦点监听器,在那里我有这个代码:

        svContainer.postDelayed(new Runnable() {
            @Override
            public void run() {
                svContainer.smoothScrollTo(0 , tvInfo.getBottom());


            }
        }, 300);

但没有任何反应。 TextView隐藏在键盘下方。 Logcat为我提供tvInfo.getBottom() == 717

编辑:如果我用smoothScrollTo()更改svContainer.fullScroll(View.FOCUS_DOWN);,那么它的滚动一直到底部!

编辑2:添加xml代码

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"
xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingPrefix"
android:id="@+id/sv_container"
android:fillViewport="false" android:background="@color/getstarted_blue_bg"
android:layout_width="match_parent" android:layout_height="wrap_content">

<LinearLayout
    android:id="@+id/ll_about_you_container"
    android:orientation="vertical" android:layout_marginTop="@dimen/spacing_xlarge"
    android:layout_width="match_parent" android:layout_height="wrap_content">

    <TextView
        android:text="@string/get_started_about_you" android:textColor="@color/white" android:textStyle="bold"
        android:layout_marginLeft="@dimen/spacing_large" android:layout_marginRight="@dimen/spacing_large"
        android:layout_width="wrap_content" android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/et_industry"
        android:maxLines="1" android:imeOptions="actionNext" android:inputType="textCapSentences"
        android:nextFocusForward="@+id/et_profession"
        android:layout_marginLeft="@dimen/spacing_large" android:layout_marginRight="@dimen/spacing_large"
        android:layout_marginTop="@dimen/spacing_large" android:textColor="@color/white" android:textSize="@dimen/app_text_size_large"
        android:layout_width="match_parent" android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/et_profession"
        android:nextFocusForward="@+id/et_company"
        android:maxLines="1" android:imeOptions="actionNext" android:inputType="textCapSentences"
        android:layout_marginLeft="@dimen/spacing_large" android:layout_marginRight="@dimen/spacing_large"
        android:layout_marginTop="@dimen/spacing_large" android:textColor="@color/white" android:textSize="@dimen/app_text_size_large"
        android:layout_width="match_parent" android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/et_company"
        android:hint="@string/get_started_company" android:textColorHint="@color/white"
        android:maxLines="1" android:imeOptions="actionNext" android:inputType="textCapSentences"
        android:layout_marginLeft="@dimen/spacing_large" android:layout_marginRight="@dimen/spacing_large"
        android:layout_marginTop="@dimen/spacing_large" android:textColor="@color/white" android:textSize="@dimen/app_text_size_large"
        android:layout_width="match_parent" android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/tv_anchor" 
        android:layout_gravity="center"
        android:text="AnchorView"
        android:layout_width="wrap_content" android:layout_height="wrap_content" />

</LinearLayout>

</ScrollView>

1 个答案:

答案 0 :(得分:0)

使用:

svContainer.post(new Runnable() {
            @Override
            public void run() {
                svContainer.scrollTo(0, tvInfo.getBottom());
            }
        });
    }

和使用: 在清单中的活动标签中:

android:windowSoftInputMode="stateHidden"