`
yxwang0615
  • 浏览: 561040 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Scrollview中动态添加widget不能滚动的为题

 
阅读更多

在Scrollview中使用了动态添加控件,或者Scrollview中包含了高度不固定的元素,如ListView等列表视图,会导致动态添加的内容超出一屏后无法显示的问题。

 

直接上代码:

1.使用LinearLayout作为根节点:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <LinearLayout
        android:id="@+id/ll_top"
        android:layout_width="match_parent"
        android:layout_height="50.0dp"
        android:background="#FF4500" >
    </LinearLayout>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0.0dp"
        android:layout_weight="1.0" >

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

            <TextView
                android:id="@+id/tv_01"
                android:layout_width="fill_parent"
                android:layout_height="50.0dp" />

            <TextView
                android:id="@+id/tv_02"
                android:layout_width="fill_parent"
                android:layout_height="50.0dp" />
            <ListView 
                android:id="@+id/listview_attachemt"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                />
        </LinearLayout>
    </ScrollView>

    <LinearLayout
        android:id="@+id/ll_bottom"
        android:layout_width="match_parent"
        android:layout_height="50.0dp"
        android:background="#FF4500" >
    </LinearLayout>

</LinearLayout>

    重点就是ScrollView使用了android:layout_height="0.0dp" android:layout_weight="1.0"属性,在绘制时告知自身的高度不固定,这样就保证了给ScrollView动态添加内容的时候其高度可变化,推荐使用此法,构思比较简单。

 

2.或使用RelativeLayout作为根节点:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <LinearLayout
        android:id="@+id/ll_top"
        android:layout_width="match_parent"
        android:layout_height="50.0dp"
        android:layout_alignParentTop="true"
        android:background="#FF4500" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll_bottom"
        android:layout_width="match_parent"
        android:layout_height="50.0dp"
        android:layout_alignParentBottom="true"
        android:background="#FF4500" >
    </LinearLayout>

    <ScrollView
        android:id="@+id/scrollview"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_above="@id/ll_bottom"
        android:layout_below="@id/ll_top"
        android:background="@color/green" >

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

            <TextView
                android:id="@+id/tv_01"
                android:layout_width="fill_parent"
                android:layout_height="50.0dp" />

            <TextView
                android:id="@+id/tv_02"
                android:layout_width="fill_parent"
                android:layout_height="50.0dp" />

            <ListView
                android:id="@+id/listview_attachemt"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" />
        </LinearLayout>
    </ScrollView>

</RelativeLayout>

 重点是ScrollView要同时定义below和above属性,不让ScrollView把top或bottom挤出屏幕之外。

 

 

分享到:
评论

相关推荐

    android ScrollView嵌套ListView,并且实现动态添加ListView里的Item

    在实际项目中,我们可能还需要处理一些额外的问题,比如设置ListView的高度为 wrap_content,以避免ScrollView的滚动冲突。或者,我们可能需要自定义ListView的滚动行为,使其在ScrollView内能正确滚动。 总的来说...

    在ScrollView上添加按钮的小 demo

    在Android开发中,ScrollView是一个非常常用的布局组件,它允许用户滚动查看超过屏幕大小的内容。本教程将通过一个简单的小demo,详细讲解如何在ScrollView中添加Button,并实现其功能。 首先,我们来理解一下...

    解决scrollView和listview滚动冲突,实现listview滑动到顶端和底部之后还能拖拽一定的距离,松开后返回

    在Android开发中,ScrollView和ListView是两种常用的布局组件,它们分别用于实现可滚动的大视图和展示多行可滚动的数据列表。然而,在实际应用中,当这两种组件同时存在于一个界面时,滚动冲突的问题就会出现,导致...

    ScrollView中嵌套ListView的例子

    用户可能无法滚动到ScrollView的底部,或者滚动体验不流畅。 解决这个问题的一种常见方法是使用NestedScrollView替代普通的ScrollView。NestedScrollView是Android Support Library中提供的一个组件,它支持嵌套...

    精选_【Cocos Creator实战教程(7)】——UI组件(1)ScrollView 组件_源码打包

    在Cocos Creator中,创建ScrollView首先要添加一个ScrollView组件到场景中,然后将需要展示的内容(如精灵、Label、Button等)作为子节点添加到ScrollView的content节点下。内容节点是ScrollView内部的一个空节点,...

    ScrollView顶部悬停效果

    2. **嵌套ScrollView**:由于普通的ScrollView无法直接处理内部元素的固定,所以可能需要使用`androidx.core.widget.NestedScrollView`,它能更好地处理子View的滚动事件。 3. **监听ScrollView的滚动事件**:通过...

    Android ScrollView 嵌套解决方案

    在Android开发中,ScrollView是一个常用的布局控件,用于展示可滚动的内容。然而,当一个ScrollView内嵌套另一个ScrollView时,可能会出现冲突和不期望的行为,因为两个可滚动的区域可能会相互干扰。这个问题在实际...

    Android-这是个快速实现在AbsListView或ScrollView滚动时隐藏悬浮在在AbsListView或ScrollView之上的控件的项目

    在Android应用开发中,我们经常会遇到这样的需求:当用户在浏览AbsListView(如ListView、GridView)或者ScrollView时,顶部的一些悬浮控件(如Toolbar、TabLayout等)会在滚动过程中自动隐藏,以提供更好的用户体验...

    android 中 ViewPager 与scrollView 冲突的解决

    然而,当这两者同时存在于一个布局中时,可能会出现冲突,导致滚动行为不正常。本篇文章将深入探讨这个问题,并提供解决方案。 首先,了解冲突的本质:ViewPager设计初衷是为了处理多个页面间的滑动切换,它会捕获...

    scrollview 下拉刷新

    综上所述,为ScrollView添加下拉刷新功能可以通过使用SwipeRefreshLayout或者自定义组件实现。理解其工作原理,结合适当的监听器和动画效果,可以创建出流畅且用户友好的刷新体验。同时,关注性能和兼容性问题,保证...

    android ScrollVIew中控件滑动顶端固定

    在Android开发中,ScrollView是一个非常常见的布局控件,它允许用户滚动查看内容,特别是当内容超过屏幕显示范围时。在给定的标题“android ScrollView中控件滑动顶端固定”中,我们讨论的是如何实现一个特定的效果...

    ScrollView横向自动滑动

    在Android开发中,ScrollView通常用于实现可滚动的布局,它允许用户查看超出屏幕尺寸的内容。当我们需要在水平方向上实现类似的功能,可以使用HorizontalScrollView。本篇将详细讲解如何实现"ScrollView横向自动滑动...

    android scrollview 下拉刷新

    在Android开发中,ScrollView是一种常用的布局控件,它允许用户通过滚动查看超出屏幕范围的内容。然而,ScrollView并不直接支持下拉刷新功能,这是现代移动应用中常见的交互模式,特别是用于加载更多数据或更新内容...

    ScrollView实现标题栏渐变效果

    通过这种方式,我们可以为`ScrollView`创建一个动态标题栏,使得标题栏颜色随着用户滚动而渐变。这种效果不仅增加了视觉吸引力,还能提供更好的交互反馈。在实际项目中,可以根据需求调整颜色、滚动速度等参数,以...

    ScrollView嵌套ListView滑动冲突的解决方法

    通过监听滑动事件,可以在代码中动态判断是应该让ScrollView滚动还是让ListView滚动。例如,可以创建一个滑动手势监听器,当滑动方向符合ScrollView滚动时,处理ScrollView的滚动,否则处理ListView的滚动。 6. **...

    解决ScrollView中listView下拉上拉刷新问题

    在Android开发中,ScrollView与ListView的组合使用是一个常见的需求,特别是在设计有滚动内容的界面时。然而,这种组合经常会遇到一些技术挑战,尤其是在实现下拉上拉刷新功能时。本篇将深入探讨如何解决ScrollView...

    四种方法解决ScrollView嵌套Listview

    在Android开发中,ScrollView和ListView的嵌套是一个常见的需求,但也是一个挑战,因为它们都是滚动视图,直接组合可能导致冲突和不可预期的行为。本篇文章将详细介绍四种解决ScrollView嵌套ListView问题的方法,...

    应用源码之ScrollView版悬浮菜单.zip

    在Android开发中,ScrollView是一种常用的布局控件,它允许用户滚动查看内容,特别是当内容超出屏幕范围时。这个"应用源码之ScrollView版悬浮菜单"的压缩包显然提供了使用ScrollView实现悬浮菜单的示例代码,这对于...

    scrollview下拉刷新

    在Android开发中,ScrollView是一种常用的布局控件,它允许用户在一个单个视图中滚动多个视图或控件。在移动应用中,特别是在内容较多、屏幕空间有限的情况下,ScrollView是必不可少的组件。当我们谈论"scrollview...

    Scrollview(阻尼回弹)嵌套GridView

    - `ScrollView`不会自动处理子视图的尺寸,因此需要手动设置子视图的合适高度,以确保能正确滚动。 **2. GridView** `GridView`是一种显示多行多列数据的视图,类似于表格布局。它会自动将子视图均匀分布到指定的行...

Global site tag (gtag.js) - Google Analytics