在LinearLayout中滚动ScrollView for children位置(解决方案)

时间:2016-04-13 00:41:02

标签: android-layout scrollview android-linearlayout android-scrollview horizontalscrollview

这篇文章实际上不是一个问题,而是一个遇到或可能遇到我发现的问题的人的解决方案。

我有一个使用一个ScrollView的Activity:

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

<android.support.v7.widget.Toolbar
    android:id="@+id/tb_pergunta"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize" />

<TableLayout
    android:id="@+id/tl_principal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
</TableLayout>

<ScrollView
    android:id="@+id/sv_table"
    android:layout_height="700dp"
    android:scrollbars="horizontal|vertical"
    android:layout_width="match_parent"
    android:layout_marginTop="5dip"
    android:scrollbarStyle="outsideInset"
    android:fillViewport="true">

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

    </LinearLayout>
</ScrollView>

LinearLayout ScrollView I属性&#34; n&#34;布局动态创建。所以,我有一个布局设置放在ScrollView

这些动态布局还会接收各类widgetsRadioButtonCheckBoxEditTextTextViewetc)的子项。

如何动态创建,它们在父LinearLayout中没有特定位置。有了这个,我很难将ScrollView滚到这些孩子身上。

获取Layouts父母的位置很容易,它只取主要LinearLayout的孩子得到(索引)(在ScrollView内)。

parentPosition = lnMain.getTop();

但为了滚动到孩子的位置,我受苦了。

结束。我发现滚动到孩子们的方式是获得顶部&#34; lnParent.getTop()&#34;的位置。以及在其中的孩子的顶部的位置。

childPosition = lnChild.getTop();

在孩子的位置上添加了父亲的职位:

scrollPosition = parentPosition + childPosition;

我让她儿子在ScrollView内的位置等于布局顶部位置爸爸与孩子的最高位置。 之后,只需转到ScrollView在上述金额中找到的孩子的位置。

final int posicaoArray = arrayFilhoOpcao.get(contArray_z + 1);

myScrollLayout.post(new Runnable() {
@Override
public void run() {
    myScrollLayout.smoothScrollTo(0, arrayPosition);
}

});

我创建的ArrayList用于放置我当前正在浏览的子布局的所有位置。

嗯......我希望你能为别人服务,而对其他人来说似乎很傻,很多像我这样的初学者有时会觉得很难找到解决其他问题的解决方案。

我希望能为Algue服务,也希望能够很好地解释,我不是很好。但毫无疑问,我有空。 拥抱!

0 个答案:

没有答案