ImageView使NestedScrollView自动向上滚动

时间:2016-04-14 01:02:28

标签: android android-layout

我在NestedScrollView里面的RelativeView里面有一个ImageView,当我设置ImageView高度时,它会在通胀后立即自动向上滚动。当我将ImageView高度设置为wrap_content时,不会发生此行为。可能是什么原因?这是支持库中的某种错误吗?

注意:

如果我将ImageView高度保持为170&删除了RelativeLayout这个向上的自动滚动没有发生。

如果我保留了RelativeLayout&将ImageView高度设置为wrap_content,这个向上的自动滚动不会发生。

<android.support.v4.widget.NestedScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.mydomain.test">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="10dp">

   <RelativeLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:padding="10dp">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="170dp"
                android:scaleType="fitXY"
                android:src="@drawable/cover"/>

   </RelativeLayout>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>

更新&amp;修正:

添加android:descendantFocusability =&#34; blocksDescendants&#34;到垂直LinearLayout修复问题:

<android.support.v4.widget.NestedScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.mydomain.test">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="10dp"
    android:descendantFocusability="blocksDescendants">

   <RelativeLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:padding="10dp">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="170dp"
                android:scaleType="fitXY"
                android:src="@drawable/cover"/>

   </RelativeLayout>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>

1 个答案:

答案 0 :(得分:0)

我找到了问题的解决方案和原因,在上面的代码中,我在一个垂直的LinearLayout中有RelativeLayout,当我添加

android:descendantFocusability="blocksDescendants"

到垂直LinearLayout,问题得到解决。