ListView是一个经常要用到的android控件,现总结遇到过的一些美化的小细节。
1、listview在拖动的时候背景图片消失变成黑色背景,等到拖动完毕我们自己的背景图片才显示出来
解决:在XML中加入
android:scrollingCache=”false” 或 android:cacheColorHint=”#00000000″作用是使拖动的时候背景颜色变黑的效果去掉
2、listview的上边和下边有黑色的阴影
解决: android:fadingEdge=”none”
3、修改listview的Item默认选择时的黄色背景
解决:在java文件中使用listview.setSelector()方法,或使用如下代码
1
android:listSelector="#00000000"//这样写是透明的,也可加入Drawable图片
4、lsitview的每一项之间需要设置一个图片做为间隔
解决: android:divider=”@drawable/list_driver”
android ListView XML中的属性:android:scrollingCache="false",在代码中怎么设置,
Android下ListView上下滑动背景变黑在代码中可以使用:listview.setCacheColorHint(Color.TRANSPARENT);
1、ListView拖动反黑
List正常显示,但是一拖动,整个背景就变成黑色。停止拖动后,颜色又变回正常。
解决方法:在Layout文件中设置ListView的属性:
android:scrollingCache="false"
2、ListView默认点击样式失效
ListView是有默认点击样式的当设置了Item的background为某种颜色或某张图片时,默认的点击样式就会失效。
其实想清楚了,很简单。ListView本来有多种状态:平常的、选中的、点击时的。如果设置了背景,那么所有这些状态下都是这一个背景了。所以点击
时没有反应。
正确的设置方法是:
在Drawable的资料里建一个xml文件,例如名为style_list_item.xml
[html] view plaincopy
01.<span style="font-size: 13px;"><?xml version="1.0" encoding="utf-8"?>
02.<selector xmlns:android="http://schemas.android.com/apk/res/android">
03. <item android:state_pressed="true" android:drawable="@drawable/btn_item_sel" />
04. <item android:drawable="@drawable/btn_item_nor" />
05.</selector></span>
再设置item的Background为@drawbale/style_list_item
3、listView中removeFooterView之后,列表无法再点击。
本来想实现列表滑动到底部时自动加载内容,加载完所有内容后,去掉列表底部的“更多”按钮。但在实际实现过程中发现,在onScroll方法里
removeFooterView后,列表不会再响应对Item的点击,有时过一会儿又会恢复。如果设置Visible为Gone,列表的底部还是会占一块空间。在网上看到另
外的朋友也遇到这个问题。大概是因为不能在onScroll方法里做这件事情。
后来就将removeFooterView的动作改到了其它地方,不放在onScroll方法里就正常了。
4、代码中动态添加TableRow到LinearLayout中,TableRow不显示
源代码如下(摘自StackOverFlow网站,这个问题我也是在那里得到的答案,超爱StackOverFlow的)
[java] view plaincopy
01.LinearLayout tabella = (LinearLayout) findViewById(R.id.tabella_contatori);
02.
03. for(int i =0; i<array_list.size(); i++){
04. TableRow row = new TableRow(getApplicationContext());
05. row.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
06.
07. TextView data = new TextView(getApplicationContext());
08. data.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.2f));
09. data.setTextAppearance(getApplicationContext(), android.R.attr.textAppearanceMedium);
10. data.setTextColor(Color.BLACK);
11. data.setBackgroundColor(Color.WHITE);
12. data.setPadding(2, 0, 0, 0);
13. data.setText("asd");
14.
15. row.addView(data);
16. tabella.addView(row);
17. }
18.}
这时,修改代码如下之后,再运行起来,TableRow的内容就会展现出来了。
data.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
就是添加到TableRow中的元素,它们LayoutParam应该是TableRow类中的LayoutParams。
1、listview在拖动的时候背景图片消失变成黑色背景,等到拖动完毕我们自己的背景图片才显示出来
解决:在XML中加入
android:scrollingCache=”false” 或 android:cacheColorHint=”#00000000″作用是使拖动的时候背景颜色变黑的效果去掉
2、listview的上边和下边有黑色的阴影
解决: android:fadingEdge=”none”
3、修改listview的Item默认选择时的黄色背景
解决:在java文件中使用listview.setSelector()方法,或使用如下代码
1
android:listSelector="#00000000"//这样写是透明的,也可加入Drawable图片
4、lsitview的每一项之间需要设置一个图片做为间隔
解决: android:divider=”@drawable/list_driver”
android ListView XML中的属性:android:scrollingCache="false",在代码中怎么设置,
Android下ListView上下滑动背景变黑在代码中可以使用:listview.setCacheColorHint(Color.TRANSPARENT);
1、ListView拖动反黑
List正常显示,但是一拖动,整个背景就变成黑色。停止拖动后,颜色又变回正常。
解决方法:在Layout文件中设置ListView的属性:
android:scrollingCache="false"
2、ListView默认点击样式失效
ListView是有默认点击样式的当设置了Item的background为某种颜色或某张图片时,默认的点击样式就会失效。
其实想清楚了,很简单。ListView本来有多种状态:平常的、选中的、点击时的。如果设置了背景,那么所有这些状态下都是这一个背景了。所以点击
时没有反应。
正确的设置方法是:
在Drawable的资料里建一个xml文件,例如名为style_list_item.xml
[html] view plaincopy
01.<span style="font-size: 13px;"><?xml version="1.0" encoding="utf-8"?>
02.<selector xmlns:android="http://schemas.android.com/apk/res/android">
03. <item android:state_pressed="true" android:drawable="@drawable/btn_item_sel" />
04. <item android:drawable="@drawable/btn_item_nor" />
05.</selector></span>
再设置item的Background为@drawbale/style_list_item
3、listView中removeFooterView之后,列表无法再点击。
本来想实现列表滑动到底部时自动加载内容,加载完所有内容后,去掉列表底部的“更多”按钮。但在实际实现过程中发现,在onScroll方法里
removeFooterView后,列表不会再响应对Item的点击,有时过一会儿又会恢复。如果设置Visible为Gone,列表的底部还是会占一块空间。在网上看到另
外的朋友也遇到这个问题。大概是因为不能在onScroll方法里做这件事情。
后来就将removeFooterView的动作改到了其它地方,不放在onScroll方法里就正常了。
4、代码中动态添加TableRow到LinearLayout中,TableRow不显示
源代码如下(摘自StackOverFlow网站,这个问题我也是在那里得到的答案,超爱StackOverFlow的)
[java] view plaincopy
01.LinearLayout tabella = (LinearLayout) findViewById(R.id.tabella_contatori);
02.
03. for(int i =0; i<array_list.size(); i++){
04. TableRow row = new TableRow(getApplicationContext());
05. row.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
06.
07. TextView data = new TextView(getApplicationContext());
08. data.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.2f));
09. data.setTextAppearance(getApplicationContext(), android.R.attr.textAppearanceMedium);
10. data.setTextColor(Color.BLACK);
11. data.setBackgroundColor(Color.WHITE);
12. data.setPadding(2, 0, 0, 0);
13. data.setText("asd");
14.
15. row.addView(data);
16. tabella.addView(row);
17. }
18.}
这时,修改代码如下之后,再运行起来,TableRow的内容就会展现出来了。
data.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
就是添加到TableRow中的元素,它们LayoutParam应该是TableRow类中的LayoutParams。