利用反射修改ListView的ScollBar图标
来源:互联网 发布:开源网络爬虫工具 编辑:程序博客网 时间:2024/06/06 01:46
MainActivity如下:
package cc.testlistviewscollbar;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import android.os.Bundle;import android.widget.AbsListView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.app.Activity;import android.graphics.drawable.Drawable;/** * Demo描述: * 利用反射修改ListView的ScollBar图标 * * 注意事项: * 并不是说这么做就一定会有效果. * 只有当ListView要显示的数据足够多(比如四屏或更多)时才会起到作用. * * 参考资料: * 1 http://blog.csdn.net/java2009cgh/article/details/7301197 * 2 http://blog.csdn.net/lfdfhl/article/details/10311505 * Thank you very much * */public class MainActivity extends Activity {private ListView mListView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();setFastScrollBarForListView();}private void init(){mListView=(ListView) findViewById(R.id.listview); List<HashMap<String, Object>> list=new ArrayList<HashMap<String,Object>>(); HashMap<String, Object> hashMap=null; for (int i = 0; i < 100; i++) { hashMap=new HashMap<String, Object>(); hashMap.put("name", "小明"+i); hashMap.put("phone", "135"+i); hashMap.put("amount","500"+i); list.add(hashMap);} SimpleAdapter adapter=new SimpleAdapter(this, list, R.layout.listviewitem, new String []{"name","phone","amount"}, new int[]{R.id.name,R.id.phone,R.id.amount}); mListView.setAdapter(adapter);}//修改ListView的FastScroller图标private void setFastScrollBarForListView() { try { Field field = AbsListView.class.getDeclaredField("mFastScroller"); field.setAccessible(true); Object object = field.get(mListView); field = field.getType().getDeclaredField("mThumbDrawable"); field.setAccessible(true); Drawable drawable = (Drawable) field.get(object); drawable = getResources().getDrawable(R.drawable.ic_launcher); field.set(object, drawable); } catch (Exception e) { System.out.println("----> 异常信息:"+e.toString()); e.printStackTrace(); } }}
main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" 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:layout_centerInParent="true" android:fastScrollEnabled="true" android:focusable="true" /></RelativeLayout>
listviewitem如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="50dip" android:gravity="center" android:orientation="horizontal" > <TextView android:id="@+id/name" android:layout_width="100dip" android:layout_height="wrap_content" /> <TextView android:id="@+id/phone" android:layout_width="150dip" android:layout_height="wrap_content" /> <TextView android:id="@+id/amount" android:layout_width="fill_parent" android:layout_height="wrap_content" /></LinearLayout>
0 1
- 利用反射修改ListView的ScollBar图标
- 利用反射修改ListView/GridView快速滚动块icon
- 修改listview滑动块图标
- listview修改滑动块图标
- Android listview 利用反射的自动绑定Adapter
- 利用注册表来修改桌面的ie图标
- 利用反射获取与修改private的属性的值
- 带图标的ListView
- 利用.net反射机制修改对象的私有变量
- 利用反射来修改局部变量的值
- 利用反射技术修改类中的字段(成员变量的反射)
- 修改文件夹的图标
- 修改netbox的图标
- 修改MFC的图标
- 修改文件的图标
- 修改应用程序的图标
- 修改JTree的图标
- 设置ListView的页眉图标
- Android 界面布局
- 行为触发之Android自动化测试instrumentation(一)
- Business Research -Designing the research
- 大型互联网站解决高并发的常见策略
- 随时修改google浏览器安装目录、缓存路径、用户收藏路径
- 利用反射修改ListView的ScollBar图标
- STL中vector、list、deque和map的区别
- 带通配符的数
- 【nyist】Personal Contest.2比赛总结
- ubuntu12.04 telnet配置
- Android中Context详解 ---- 你所不知道的Context
- Gstreamer 插件编写【二】高级特性
- 解决Clock skew detected.
- TCP扫描和UDP扫描以及它们的区别