在Scrollview中将元素置于当前视口上

时间:2016-05-13 07:51:09

标签: android xml android-layout scrollview

我想显示一个点,它总是在我的设备的物理中心,即使我滚动它周围的内容,这是在滚动视图中。这是我目前的代码,但这里缺少点,因为我不知道放在哪里。滚动位置仅通过代码设置,因此如果居中元素阻止滚动视图,则不会出现问题。

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:deviceIds="wear_square"
android:gravity="center">

<android.support.v4.widget.NestedScrollView
    android:id="@+id/vertsv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

    <HorizontalScrollView
        android:id="@+id/horisv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">

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

            <ImageView
                android:id="@+id/imageView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/map" />
        </LinearLayout>
    </HorizontalScrollView>
</android.support.v4.widget.NestedScrollView>

解决方案:

<RelativeLayout 
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:deviceIds="wear_square">

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

<android.support.v4.widget.NestedScrollView
    android:id="@+id/vertsv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

    <HorizontalScrollView
        android:id="@+id/horisv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">

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

            <ImageView
                android:id="@+id/imageView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/map" />
        </LinearLayout>
    </HorizontalScrollView>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:src="@drawable/ic_my_location_black_24dp" />
</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

将您的点放在布局中的任何其他位置下方。您还应该使用FrameLayout / RelativeLayout而不是LinearLayout作为顶级父容器。