- 浏览: 386421 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (269)
- FY_UML (3)
- FY_JAVA (12)
- FY_JavaScript脚本 (7)
- FY_JSP (3)
- FY_Tapestry框架 (12)
- FY_Spring框架 (3)
- FY_Manager (5)
- FY_Junit(单元测试) (3)
- SERVER (14)
- FY_Struts2框架 (3)
- FY_SVN (2)
- FY_NoSQL (2)
- FY_jquery_sir (13)
- FY_hibernate_sir (8)
- FY_设计模式_sir (6)
- FY_Extjs_sir (10)
- FY_CI_sir (5)
- FY_Oracle_sir (11)
- FY_MySql_sir (10)
- FY_Hadoop_sir (3)
- FY_SOA_sir (1)
- 中文分词技术 (1)
- FY_Android (52)
- FY_架构 (2)
- FY_PhoneGap (2)
- FY_Webstorm (5)
- FY_Sencha Touch (3)
- HTML5应用快速开发 (1)
- FY_python (0)
- HADOOP (1)
- AI (0)
最新评论
-
antao592:
楼主,HkDataSourceWrapper中的getCurr ...
结合spring jdbc 实现分表分库的数据库访问构思 -
bonait:
不错,看看我的这个怎么样www.zipin168.com
So Easy京东商城 -
chenzheng8975:
...
So Easy京东商城 -
yzhenxing:
我导入demo后少com.google.android.gms ...
google地图demo -
echoaiya:
非常感谢~~
google地图demo
ch013 Android ScrollView与ListView
- 博客分类:
- FY_Android
--------------------------------------------Layout activity_main.xml--------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ScrollView
android:id="@+id/srcollview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdge="none" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdge="none" >
</ListView>
</LinearLayout>
</ScrollView>
</LinearLayout>
--------------------------------------------Layout list_item.xml------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" android:gravity="center">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="....................."/>
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:src="@drawable/list_arrow"/>
</LinearLayout>
--------------------------------------------drawable circle_list_middle.xml-------------------
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/circle_list_middle_s" android:state_pressed="true"></item>
<item android:drawable="@drawable/circle_list_middle_s" android:state_selected="true"></item>
<item android:drawable="@drawable/circle_list_middle_n"></item>
</selector>
--------------------------------------------MainActivity.java-----------------------------------
package com.ch13;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
/**
*
* 项目名称:com.ch13
* 类名称:MainActivity
* 类描述: ListView与ScrollView一起使用
* 创建人:方勇
* 创建时间:2012-11-20 下午9:16:20
* Copyright (c) 方勇-版权所有
*/
public class MainActivity extends Activity {
private ListView listview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViews();
setListeners();
init();
}
/* 初始化UI */
private void findViews() {
listview = (ListView) findViewById(R.id.listview);
}
/* 设置监听 */
private void setListeners() {
}
/* 初始化数据 */
private void init() {
listview.setAdapter(new MyAdapter(this));
HUtil.setListViewHeightByChildHeight(listview);
}
}
--------------------------------------------MyAdapter.java-------------------------------------
package com.ch13;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
/**
*
* 项目名称:com.ch13
* 类名称:MyAdapter
* 类描述: 自定义适配器
* 创建人:方勇
* 创建时间:2012-11-20 上午8:44:59
* Copyright (c) 方勇-版权所有
*/
public class MyAdapter extends BaseAdapter {
/*上下文*/
private Context mcontext;
/*布局管理器*/
LayoutInflater layoutInflater;
/*数据集合*/
private List<HashMap<String,Object>> list = new ArrayList<HashMap<String,Object>>();
public MyAdapter(Context context) {
super();
this.mcontext = context;
layoutInflater = LayoutInflater.from(context);
setData();
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
/*面向OOP思想*/
static class ViewHolder{
ImageView image_icon;
TextView view_content;
ImageView image_img;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
/*初始化UI*/
if(null==convertView){
/*item实例化*/
convertView = layoutInflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
holder.image_icon = (ImageView) convertView.findViewById(R.id.icon);
holder.view_content = (TextView) convertView.findViewById(R.id.content);
holder.image_img = (ImageView) convertView.findViewById(R.id.img);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
//设置背景图片
convertView.setBackgroundResource(R.drawable.circle_list_middle);
//设值
holder.image_icon.setImageResource((Integer) list.get(position).get("icon"));
holder.view_content.setText(list.get(position).get("content").toString());
holder.image_img.setImageResource((Integer) list.get(position).get("img"));
return convertView;
}
/* 初始化ListView数据 */
private void setData(){
HashMap<String,Object> map01 = new HashMap<String,Object>();
map01.put("icon", R.drawable.ic_launcher);
map01.put("content", "我的资料");
map01.put("img", R.drawable.list_arrow);
list.add(map01);
HashMap<String,Object> map02 = new HashMap<String,Object>();
map02.put("icon", R.drawable.ic_launcher);
map02.put("content", "设置");
map02.put("img", R.drawable.list_arrow);
list.add(map02);
HashMap<String,Object> map03 = new HashMap<String,Object>();
map03.put("icon", R.drawable.ic_launcher);
map03.put("content", "用户切换");
map03.put("img", R.drawable.list_arrow);
list.add(map03);
HashMap<String,Object> map04 = new HashMap<String,Object>();
map04.put("icon", R.drawable.ic_launcher);
map04.put("content", "查看消息记录");
map04.put("img", R.drawable.list_arrow);
list.add(map04);
HashMap<String,Object> map05 = new HashMap<String,Object>();
map05.put("icon", R.drawable.ic_launcher);
map05.put("content", "查看版本");
map05.put("img", R.drawable.list_arrow);
list.add(map05);
}
}
--------------------------------------------HUtil.java-------------------------------------------
package com.ch13;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
/**
*
* 项目名称:com.ch13
* 类名称:HUtil
* 类描述: 解决ListView与ScrollView一起使用时的ListView高度问题
* 解决思路为
* 1、获取ListView下子控件的高度+控件之间的间隔,
* 2、赋值给ListView的LayoutParams对象
*
* 创建人:方勇
* 创建时间:2012-11-20 上午9:32:01
* Copyright (c) 方勇-版权所有
*/
public class HUtil {
/*记录总高度*/
static int totalHeight = 0;
public static void setListViewHeightByChildHeight(ListView listView){
/*得到适配器*/
MyAdapter myAdapter = (MyAdapter) listView.getAdapter();
/*遍历控件*/
for (int i = 0; i < myAdapter.getCount(); i++) {
View view = myAdapter.getView(i, null, listView);
/*测量一下子控件的高度*/
view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
totalHeight+=view.getMeasuredHeight();
}
/*控件之间的间隙*/
totalHeight+=listView.getDividerHeight()*(listView.getCount()-1);
/*2、赋值给ListView的LayoutParams对象*/
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight;
listView.setLayoutParams(params);
}
}
--------------------------------------------使用前的效果----------------------------------------
--------------------------------------------使用后的效果----------------------------------------
发表评论
-
史上最快 Android N(安卓7.0)运行效率暴增至600%
2016-10-15 10:08 933谷歌I/O 2016开发者大会在公司总部正式拉开 ... -
So Easy京东商城
2014-12-10 16:51 1585So Easy京东商城 我和17位小伙伴们 ... -
过期Gallery取代方案horizontalscrollView之菜单导航效果
2014-03-23 16:19 2417效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之京东效果
2014-03-23 15:57 3882效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之幻灯片效果
2014-03-21 17:33 2628效果 ------------------------- ... -
tabhostandbadgeview
2014-03-19 13:45 1037效果 -------------------------- ... -
Android优秀开源项目大全
2014-03-18 15:17 1989以下是开源项目 1、and ... -
Android分页控件xlistview
2014-03-18 14:51 1678strings.xml ----------------- ... -
过期Gallery取代方案horizontalscrollView之普通画廊
2014-03-17 22:48 2447activity_main.xml ---------- ... -
viewpage
2014-03-17 18:08 1064strings.xml ----------------- ... -
FragmentStatePagerAdapter分页
2014-03-17 17:27 812ViewPager ViewPager 如 ... -
FragmentPagerAdapter与FragmentStatePagerAdapter差异
2014-03-17 17:20 1323简介 平常使用的FragmentPagerAdapter和F ... -
抽屉菜单
2014-03-16 12:51 1849strings.xml ----------------- ... -
px和dip以及sp的区别
2014-03-08 17:01 720显示单位px和dip以及sp的区别 dip: devi ... -
fragment生命周期
2014-03-06 16:59 895Fragment必须被写成可重用的模块。因为fragmen ... -
过期API_AlertDialog
2014-03-02 10:07 1156layout----------------------- ... -
Android_Jni 操作指南
2014-01-10 14:45 953Android_Jni 操作指南 NDK(Nati ... -
各种各样圆形进度条
2013-11-11 16:30 567http://www.apkbus.com/android-1 ... -
红杏出墙__实训版
2013-04-20 18:59 1087红杏出墙__实训版 -
google地图demo
2013-04-09 14:25 3211---------------------------- ...
相关推荐
总的来说,Android开发中的ScrollView嵌套ListView和GridView是一项挑战,但通过巧妙地使用SwipeRefreshLayout、自定义适配器和滚动事件处理,我们可以构建出高效且功能丰富的用户界面。同时,不断优化性能和用户...
在Android开发中,ScrollView和ListView是两种常用的布局组件。ScrollView是一个可以包含单个直接子视图的滚动容器,而ListView则是一个可以展示多个相同类型的条目并且支持滚动的控件。当在一个ScrollView中嵌套一...
在Android开发中,有时我们需要在一个布局中同时使用ScrollView和ListView,以便实现更丰富的滚动效果。ScrollView通常用于包含多个可滚动的视图,而ListView则是一个优化的、可滚动的视图容器,通常用于显示大量的...
在Android开发中,ScrollView和ListView是两种常用的布局组件。ScrollView是一个可以滚动的视图容器,它允许其内容超出屏幕大小。而ListView则用于显示一列可滚动的项目,通常用于展示大量的数据。当在一个布局中...
本文将深入探讨如何正确地在Android应用中实现ScrollView与ListView、ViewPager的共存。 首先,我们来看ScrollView。ScrollView是一个可以包含多个子视图并允许用户滚动查看这些视图的容器。它通常用于包含内容过多...
在Android开发中,有时我们需要实现一个功能,即对ScrollView或ListView等滚动视图进行截图,并将截图保存到用户的图库中。这个功能在许多应用场景下非常有用,比如社交媒体分享、应用内部保存用户浏览记录或者创建...
在Android开发中,ScrollView和ListView都是非常常见的视图组件。ScrollView是一个可以滚动的布局容器,它允许用户滚动包含的内容,而ListView则是一个可滚动的列表,通常用于显示大量数据集。当需要在一个页面中...
在Android开发中,ScrollView和ListView都是非常常用的控件。ScrollView是一个可滚动的视图容器,能够包含一个或多个视图,并允许用户上下滑动查看超出屏幕的内容。而ListView则是一个显示多行数据的视图,通常用于...
1. **使用NestedScrollView替代ScrollView**:NestedScrollView是Android Support Library中提供的一个滚动视图,它支持嵌套滚动,可以更好地与ListView或其他滚动视图协同工作。将ScrollView替换为NestedScrollView...
在Android开发过程中,我们经常会遇到ScrollView与ListView或GridView组合使用时出现的滑动冲突问题。这类问题通常表现为:当ScrollView内部包含一个ListView或GridView时,用户滑动屏幕时可能无法正常滚动列表中的...
在Android开发中,ScrollView和ListView是两种常用的布局控件,它们各自有特定的用途,但有时在实际应用中,我们可能需要将它们结合使用,以实现特定的界面效果,比如在滚动时保持底部元素固定可见。这篇博文主要...
总之,解决ScrollView与ListView滑动事件冲突的关键在于正确处理触摸事件的分发,确保每个组件都能在合适的时候接收并处理滑动事件。通过自定义组件或者利用现有组件的特性,我们可以构建出更加符合用户体验的界面。...
在Android开发中,ScrollView和ListView是两种常用的布局组件,它们分别用于实现可滚动的大视图和展示多行可滚动的数据列表。然而,在实际应用中,当这两种组件同时存在于一个界面时,滚动冲突的问题就会出现,导致...
在Android开发中,ListView与ScrollView的使用经常会产生冲突,因为两者都是用来展示多行数据的控件,但它们的工作机制有所不同。ListView通过复用Item视图来提高性能,而ScrollView则将所有子视图一次性加载到内存...
总之,处理ScrollView与ListView之间的滑动冲突是Android开发中的常见挑战,理解滑动事件的处理流程和利用提供的API或自定义逻辑,是解决问题的关键。通过以上所述的方法,开发者能够有效地解决这种冲突,实现流畅的...
总之,通过上述重写onMeasure方法的方式,可以解决Android中ScrollView与ListView或GridView嵌套导致的冲突问题。这种方法不仅适用于简单的嵌套,也能在数据量较大时保证应用的流畅性和用户体验。
在Android开发中,ScrollView和ListView都是非常常见的视图组件。ScrollView是一个可以滚动的布局容器,用于包裹其他View或ViewGroup,当内容超过屏幕时,用户可以通过滑动来查看隐藏的内容。而ListView则是一个专为...
总之,理解和掌握ScrollView与ListView的结合使用及其问题解决是Android开发中的一个重要技能。自定义这两个组件可以帮助我们实现更多功能,提高应用的用户体验,同时也锻炼了我们的编程能力和问题解决能力。
在Android开发中,ScrollView和ListView都是非常常见的控件。ScrollView是一个可滚动的视图容器,它可以包含一个或多个视图,并允许用户上下滑动查看内容。而ListView则是一个用于展示长列表的视图,通常用于显示...