在具有多个片段的ScrollView中以编程方式向下滚动到某个位置

时间:2017-07-24 06:13:49

标签: android android-fragments scrollview

我使用ScrollView多个Fragments,它们在运行时放置。 现在,如果我在片段中按Button,我想向下滚动到底部 相应的片段,而不是整个scrollview的底部。 片段底部始终有一个按钮,也许可以触发按钮作为" scrollTo .."的项目。 有什么建议怎么做?

这是ScrollView

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/scrollView">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/fragment1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" />

        <LinearLayout
            android:id="@+id/fragment2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" />

        <LinearLayout
            android:id="@+id/fragment3"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" />

        ...

    </LinearLayout>
</ScrollView>

这就是一个片段的样子

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="30dp"
    android:layout_marginEnd="20dp"
    android:layout_marginStart="20dp"
    android:layout_marginTop="20dp"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        ...

    </LinearLayout>

    <LinearLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="30dp"
        android:orientation="vertical"
        android:visibility="visible">

        ...

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_marginTop="20dp"
            android:orientation="horizontal">

            <android.support.v7.widget.AppCompatButton
                android:layout_width="120dp"
                android:layout_height="45dp"
                android:text="@string/continueBtn"
                android:textAllCaps="true"
                android:textStyle="bold" />

            <android.support.v7.widget.AppCompatButton
                android:layout_width="120dp"
                android:layout_height="45dp"
                android:layout_marginStart="10dp"
                android:text="@string/backBtn"
                android:textAllCaps="true"
                android:textStyle="bold" />
        </LinearLayout>
    </LinearLayout>

2 个答案:

答案 0 :(得分:1)

我会使用而不是ScrollViewRecyclerView,每个列表元素都是你的每个片段。然后,为了移动到每一个,我将使用scrollToPosition()方法。

答案 1 :(得分:0)

这解决了我的问题:

var height = 0;
function update() {
 $(".match" ).each(function () {
  height = $(this).width();
    console.log(height);
    $(this).css('height',height + 'px'); 
 }); 
 $(".oblong" ).css('height',height + 'px');
}

我需要的是scrl.post(new Runnable() { public void run() { scrl.smoothScrollBy(0,btn.getBottom()); } }); 而不是scrollBy