[scrollView内容更改时调整其大小

问题描述 投票:0回答:1

我的布局如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:animateLayoutChanges="true"
    android:orientation="vertical">

    <eddine.charef.mechalikh.swipedemo.NotifyingScrollView
    android:id="@+id/scroll_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
        android:layout_marginTop="-40dp"
        android:fillViewport="false">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/image_header"
            android:layout_width="match_parent"
            android:layout_height="250dp"
            android:src="@drawable/stethoscope"
            android:scaleType="centerCrop" />
        <View
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/view"
            android:background="@drawable/gradient"/>
        <View
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/view2"
            android:layout_above="@+id/linearLay"
            android:background="@drawable/gradient2"
            android:visibility="gone" />

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_marginTop="-10dp"
            android:layout_below="@+id/image_header"
            android:id="@+id/linearLay"
            android:animateLayoutChanges="true"
            android:background="#ffffff"
            android:layout_alignTop="@+id/editPrenom">

            <Space
                android:layout_width="fill_parent"
                android:layout_height="22dp"
                android:id="@+id/space_spinner"
                android:visibility="gone" />

            <Spinner
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:id="@+id/spinner3"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:visibility="gone"
                android:gravity="center" />

        </LinearLayout>


        <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/listView5"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/linearLay"
            android:visibility="visible" />


        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="@string/bienvenue"
            android:id="@+id/textView20"
            android:textColor="#000"
            android:layout_centerHorizontal="true"
            android:layout_below="@+id/view"
            android:visibility="visible"
            android:layout_marginTop="20dp"
            android:gravity="left"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:id="@+id/textView21"
            android:textColor="#000"
            android:layout_below="@id/textView20"
            android:layout_centerHorizontal="true"
            android:visibility="visible"
            android:gravity="left"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />
        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/imageView5"
            android:layout_below="@+id/linearLay"
            android:src="@drawable/shadow_divider"
            android:layout_marginTop="-3dp" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imageView2"
            android:adjustViewBounds="true"
            android:src="@drawable/param"
            android:onClick="params_click"
            android:visibility="visible"
            android:layout_above="@+id/linearLay"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="15dp"
            android:layout_marginBottom="-25dp"
            android:scaleType="center" />

    </RelativeLayout>
</eddine.charef.mechalikh.swipedemo.NotifyingScrollView>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/image_scroll_up_2"
        android:adjustViewBounds="true"
        android:src="@drawable/scroll_up"
        android:onClick="scroll_up"
        android:visibility="invisible"
        android:layout_above="@+id/space"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_marginRight="15dp" />

    <Space
        android:layout_width="fill_parent"
        android:layout_height="15dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/space" />
</RelativeLayout>

在运行时listView内部的scrollView将被更新...当用户单击“日期”时,它显示一切正常(没问题)当他单击“跟随”时,即使listview为空并且滚动视图正常(没有问题,也无法滚动,因为列表为空)但是,当选择“消息”时,当列表为空或只有几个项目时...滚动视图可以滚动(我的意思是有很多空间可以看到图片)

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9NMnRkc5wbmcifQ==” alt =“在此处输入图像描述”>

“在此处输入图像描述”

此图片中心的白色光盘是设置中开发人员选项的触摸点,不属于我的版面设计

您可以看到列表在第二张图片中的结尾(listView的背景与scrollView不同)

所以为什么不调整scrollView的大小?

[注意:我使用此功能调整listView的大小,以便将其显示在scrollView中

           ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
        // pre-condition
              return;
        }

        int totalHeight = listView.getPaddingTop() + listView.getPaddingBottom();
        for (int i = 0; i < listAdapter.getCount(); i++) {
             View listItem = listAdapter.getView(i, null, listView);
             if (listItem instanceof ViewGroup) {
                listItem.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
             }
             listItem.measure(0, 0);
             totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
                  listView.setLayoutParams(params);
    }

我在所有项目更改的地方都称呼它。

android scrollview
1个回答
0
投票

我不明白为什么要将scollview放在列表视图中,您尝试执行视差还是使用工具栏播放?

© www.soinside.com 2019 - 2024. All rights reserved.