当布局大于屏幕时,居中Horizo​​ntalScrollView和LinearLayout

时间:2012-11-29 18:07:55

标签: java android android-linearlayout

我正在开发Family Tree应用程序。现在,树视图可能很大,我允许用户左右导航(例如,如果你有7个兄弟姐妹)。但是当我打开树视图时,它总是从左角开始,你可以向右滚动以查看更多信息。我希望树视图始终在布局的中间打开。

以下是代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/HorizontalScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/light_green" >

    <LinearLayout
        android:id="@+id/Top_Level_View_Family_Tree"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="vertical"  >

        <TextView
            android:id="@+id/TextView_view_family_members_title"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="3"
            android:text="Family Tree"
            android:gravity="center_horizontal"
            android:textSize="@dimen/font_large" />

        <LinearLayout
            android:id="@+id/Family_Tree_parentLL"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="4"
            android:gravity="center_horizontal"
            android:orientation="horizontal"  >
        </LinearLayout>

        <LinearLayout
            android:id="@+id/Family_Tree_yourLL"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="4"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >
        </LinearLayout>
        <LinearLayout
            android:id="@+id/Family_Tree_siblingLL"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="4"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >
        </LinearLayout>

        <LinearLayout
            android:id="@+id/Family_Tree_childLL"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="4"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >
        </LinearLayout>
    </LinearLayout>

</HorizontalScrollView>

这是应用程序:
http://img838.imageshack.us/img838/310/appa.png

很棒的帮助: Android calculate scrollTo position in HorizontalScrollView

1 个答案:

答案 0 :(得分:0)

你必须将它放在代码中,不能用XML来实现。使用HorizontalScrollView HorizontalScrollView hView = findViewById( R.id.HorizontalScrollView01 ); LinearLayout lin = findViewById( R.id.Top_Level_View_Family_Tree ); int width = lin.getWidth(); hView.scrollTo( width / 2, 0 ); 方法完成此操作。你必须根据顶层LinearLayout的宽度计算你需要滚动到自己的位置。

如下所示:

scrollTo

现在,您需要编辑{{1}}部分,因为我确定它不是滚动到的正确位置,它可能会滚动到视图左侧的位置,以及我确实假设它去了中心。你必须要进行计算才能使它达到你想要的效果。