zoukankan      html  css  js  c++  java
  • Scrollview中嵌套ListView(自定义组件解决)

    首先,ScrollView中只能放一个控件,一般都放LinearLayout,orientation属性值为vertical。在LinearLayout中放需要呈现的内容。ListView也在其中,ListView的高度设为适应自身内容(wrap_content)。

    下面直接看例子吧:

    <?xml version="1.0" encoding="utf-8"?>
    <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:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:orientation="vertical"
        tools:context="com.xxx.bokeyuan_16.MainActivity">
    
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
    
        <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/text_num">
    
    </ListView>
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button2" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button3" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button4" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button5" />
            </LinearLayout>
        </ScrollView>
    
    </LinearLayout>
    

      上面代码中的@array/text_num就是在trings中创建数据:

    <resources>
        <string-array name="text_num">
            <item>1</item>
            <item>2</item>
            <item>3</item>
            <item>4</item>
            <item>5</item>
            <item>6</item>
            <item>7</item>
            <item>8</item>
            <item>9</item>
            <item>10</item>
        </string-array>
    </resources>
    

      得到的效果如下图:可以清楚的看到ListView里面的数据仅显示了text_num中的第一个数据。

    下面通过自定义组件来解决此显示不全的问题:点击New,在其中创建一个MyListView类如下:

    完成下列创建后,再在上面的layout中将ListView改成com.xxx.scrollview.MyListView

    package com.xxx.scrollview;
    
    import android.content.Context;
    import android.util.AttributeSet;
    import android.widget.ListView;
    
    /**
     * Created by john on 2016/7/15.
     */
    class MyListView extends ListView{
    
        public MyListView(Context context) {
            super(context);
        }
    
        public MyListView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        //重新测量空间(这里是高度)
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            heightMeasureSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    }

    如下图,现在再来运行就搞定了。

  • 相关阅读:
    【原】PHP从入门到精通2小时【图文并茂】
    VMware虚拟机扩容
    linux修改固定IP
    According to TLD or attribute directive in tag file, attribute items does not accept any expressions
    eclipse juno 怎么安装maven
    MySQL的ROUND函数
    GitHub如何删除一个代码仓库
    win7企业版激活
    git-中文乱码
    Eclipse各个版本及其对应代号、下载地址列表【转】
  • 原文地址:https://www.cnblogs.com/renqiqiang/p/5677001.html
Copyright © 2011-2022 走看看