关闭

ScrollView和Listview结合使用

241人阅读 评论(0) 收藏 举报
分类:

拖动前
拖动后
- 自定义布局

public class MyListview extends ListView{

    public MyListview(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    public boolean dispatchTouchEvent(MotionEvent ev) {  

         getParent().requestDisallowInterceptTouchEvent(true);  
         boolean b = super.dispatchTouchEvent(ev);
        return b;    
    }  
}
  • 布局中载入
<ScrollView 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="com.yang.sl.MainActivity" >

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

        <com.yang.sl.MyListview
            android:id="@+id/main_mylistview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="10dp"
        android:text="黑" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="20dp"
        android:text="黑" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="30dp"
        android:text="黑" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="40dp"
        android:text="黑" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="50dp"
        android:text="黑" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="60dp"
        android:text="黑" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="10dp"
        android:text="红" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="20dp"
        android:text="红" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="30dp"
        android:text="红" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="40dp"
        android:text="红" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="50dp"
        android:text="红" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="60dp"
        android:text="红" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="70dp"
        android:text="红" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="80dp"
        android:text="红" />
    </LinearLayout>

</ScrollView>
  • 效果实现
public class MainActivity extends Activity {

    private String item[]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","E","Y","Z"};
    private MyListview lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        init();
        setOnSL(lv);
    }

    private void init() {
        lv = (MyListview) findViewById(R.id.main_mylistview);

        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_expandable_list_item_1, item);
        lv.setAdapter(adapter);
    }
    @SuppressWarnings("deprecation")
    private void setOnSL(MyListview listview) {
        // TODO Auto-generated method stub
        @SuppressWarnings("rawtypes")
        ArrayAdapter listAdapter = (ArrayAdapter) listview.getAdapter();

        if(listAdapter == null){

            return;
        }
        int toTalHeight = 0;

        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listview);

            if(listItem != null){
                listItem.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

                listItem.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);

                toTalHeight += listItem.getMeasuredHeight();
            }
        }
        LayoutParams params = listview.getLayoutParams();
        params.height = toTalHeight + (listview.getDividerHeight() * (listview.getCount() - 1))+listview.getPaddingTop()+listview.getPaddingBottom();

        int h=getWindowManager().getDefaultDisplay().getHeight();

        if(params.height>h / 2){
            params.height = h / 2;
        }
        listview.setLayoutParams(params);
    }
}
0
0
查看评论

Android 解决SwipeRefreshLayout与ListView和ScrollView滑动冲突

SwipeRefreshLayout与ScrollView滑动冲突: scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() { @...
  • superyu1992
  • superyu1992
  • 2017-03-06 15:35
  • 566

Android中ListView与ScrollView混合使用

ListView与ScrollView混合使用主要有两种效果: 1、ListView在ScrollView中高度固定。滑动ListView时,ListView滚动。ListView到头或者滑动ScrollView时整个页面滚动。 listView.setOnTouchListener(new Vie...
  • c19344881x
  • c19344881x
  • 2015-11-12 12:58
  • 4550

解决scrollview嵌套listview后,listview的setSelection失效问题

项目中scrollview嵌套listview后,各种问题,首先是listview的高度计算问题;后面有liistview的setSelection失效问题 。 前一种网上有多种解决办法,就不在这里描述了。  主要是后一种,可能初学者会不知道怎么处理,我今天大概描述一下我的处理方...
  • blf09
  • blf09
  • 2016-03-22 21:25
  • 1018

(11)解决Listview与ScrollView冲突&&其区别

1.Listview与ScrollView区别 2.Listview与ScrollView冲突解决
  • ligengk
  • ligengk
  • 2014-08-11 11:19
  • 1071

Android ScrollView和ListView事件冲突问题解决方法

不知道有没有朋友遇到这种问题:就是当你一个ScrollView里面包含一个ListView的时候,你会发现一个问题:当listview里面的item条目过多的时候,在Listview中只会显示一部分,当你滑动该listview确滑动的是ScrollView。从而导致listview中显示的N多数据显...
  • qq_26888925
  • qq_26888925
  • 2016-07-27 12:02
  • 467

解决ScrollView或ListView中嵌套ListView引起的冲突

转载请注明:[noyet12的博客](http://blog.csdn.net/u012975705) 在ScrollView或ListView等滑动控件中嵌套ListView时,往往会导致ListView显示不完整,只显示一条数据,想使ListView显示完整可以通过重写ListView的onMe...
  • u012975705
  • u012975705
  • 2015-11-25 11:45
  • 4234

ScrollView嵌套ListView——解决滑动冲突问题

//布局中的代码实现 一个简单的布局设置 演义滑动冲突<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas....
  • Mannver
  • Mannver
  • 2016-04-12 20:49
  • 11155

浅谈ListView自带的滚动条和ScrollView中嵌套ListView的区别

首先,当ListView中有很多个item要显示,以致屏幕不能完全显示时,ListView自带滚动条,通过滑动就可以查看全部。但也可以将ListView嵌套在ScrollView中,同样可以达到相同的显示效果。 但是,显示的相同,并不代表实际处理效果是一样的。 ListView自带的滚动条对于”...
  • u013026045
  • u013026045
  • 2014-12-06 15:55
  • 922

cocos2dx ScrollView,TableView,ListView区别

TableView,ListView都继承自ScrollView 用法区别: 少量数据使用ListView,ScrollView比较好,大量的数据插入及其访问,则用TableView好 为什么? because: ListView,ScrollView每次都是加载的所有的item,所有数据...
  • malizhchxiaozi
  • malizhchxiaozi
  • 2017-11-28 00:56
  • 106

ScrollView+LinearLayout 仿Listview 效果

布局代码<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"...
  • wang1897b7
  • wang1897b7
  • 2016-12-17 14:25
  • 456
    个人资料
    • 访问:4492次
    • 积分:245
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类