zoukankan      html  css  js  c++  java
  • Android ListView圆角

    首先来看看ListView 相关基本属性

    1、单击列表后,列表的背景变成黑色了。

    可通过指定android:cacheColorHint的属性来放变它,将它指定为透明。

    使用以下的属性值:
        android:cacheColorHint="#000000" 就可以。
    2、去除列表项中间的切割线:android:divider="#00000000",这里的值也能够指向一个drawable图片对象(android:divider="@drawable/list_line")。假设使用了图片高度大于系统的像素的话,能够自己设定一个高度。

    android:dividerHight="10px"
    3、listview在拖动时。listview的背景变成黑色。用这个可解决:android:scrollingCache="false"
    4、listview的上边和下边有黑色的阴影。用这个可解决:android:fadingEdge="none"
    5、listview右边的滑动条覆盖列表项的内容。用这个可解决:android:scrollbarStyle="outsideInset"
    6、改动listvew右边的滑动条与列表项之间的距离。

    用这个可解决:android:paddingRight="10dip"。能够依据须要进行改动。
    7、改动右边的滑动条显示的颜色。用这个可解决:
        android:scrollbarTrackVertical="@drawable/scrollbar_vertical_track"
        android:scrollbarThumbVertical="@drawable/scrollbar_vertical_thumb"  
    当中scrollbar_vertical_track和scrollbar_vertical_thumb是滑动条的XML配置文件,在API中有,可依据自己的须要改动一下開始颜色和结束颜色就可以。

    详细请參考这篇文章 Android ListView 属性

    以下来看看ListView 圆角实现,本文主要亮点是数据源能够灵活设置。不用在xml上写死了。

    1.在drawable文件下新建

      list_bottom_selector.xml

     

    <?

    xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"><shape> <solid android:color="#ADFF2F" /> <corners android:bottomLeftRadius="4dp" android:bottomRightRadius="4dp" /> </shape></item> <item><shape> <solid android:color="@color/white" /> <corners android:bottomLeftRadius="4dp" android:bottomRightRadius="4dp" /> </shape></item> </selector>

    如法炮制 新建几个xml

    list_rect_selector.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:state_pressed="true"><shape>
                <solid android:color="#ADFF2F" />
            </shape></item>
        <item><shape>
                <solid android:color="@color/white" />
            </shape></item>
    
    </selector>

    list_round_selector.xml

    <?xml version="1.0" encoding="utf-8"?>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">  
          
            <item android:state_pressed="true"><shape>  
                    <solid android:color="#ADFF2F" />  
                    <corners android:bottomLeftRadius="4dp" android:bottomRightRadius="4dp" 
                        android:topLeftRadius="4dp" android:topRightRadius="4dp"/>  
                </shape></item>  
            <item><shape>  
                    <solid android:color="@color/white" />  
          
                    <corners android:bottomLeftRadius="4dp" android:bottomRightRadius="4dp" 
                        android:topLeftRadius="4dp" android:topRightRadius="4dp"/>  
                </shape></item>  
          
        </selector>  

    list_top_selector.xml

    <?xml version="1.0" encoding="utf-8"?

    > <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"><shape> <solid android:color="#ADFF2F" /> <corners android:topLeftRadius="4dp" android:topRightRadius="4dp" /> </shape></item> <item><shape> <solid android:color="@color/white" /> <corners android:topLeftRadius="4dp" android:topRightRadius="4dp" /> </shape></item> </selector>


    接下来我们在layout新建一个item.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingRight="5dp"
        >
        <TextView 
            android:id="@+id/text"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
           	android:textSize="16sp"
           	android:paddingLeft="15dp"
           	android:textColor="#000000"
            android:gravity="left|center_vertical"
            />
        
        <ImageView 
            android:src="@drawable/common_left"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_alignParentRight="true"
            />
    
    </RelativeLayout>

    后新建一个activity_main.xml 来作为我们程序的主页面。也就是我们要显示ListView,布局也非常easy

    例如以下:

    <?xml version="1.0" encoding="utf-8"?

    > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="15dp" > <ListView android:id="@+id/list1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/round_bg" android:cacheColorHint="#00000000" android:divider="@color/list_divider" android:dividerHeight="0.1dp" android:listSelector="#00000000" > </ListView> <ListView android:id="@+id/list2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:background="@drawable/round_bg" android:cacheColorHint="#00000000" android:divider="@color/list_divider" android:dividerHeight="0.1dp" android:listSelector="#00000000" > </ListView> <ListView android:id="@+id/list3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:background="@drawable/round_bg" android:cacheColorHint="#00000000" android:divider="@color/list_divider" android:dividerHeight="1px" android:listSelector="@color/transparent" > </ListView> </LinearLayout>


    然后新建一个MainActivity

    public class MainActivity extends Activity {
    
    	private ListView list1;
    	private ListView list2;
    	private ListView list3;
    	
    	String array1[] = {"设置"};
    	String array2[] = {"朋友圈","我的空间"};
    	String array3[] = {"我的钱包","我的收藏","我的相冊","关联"};
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		initView();
    	}
        private void initView()
        {
    		list1 = (ListView) findViewById(R.id.list1);
    		list2 = (ListView) findViewById(R.id.list2);
    		list3 = (ListView) findViewById(R.id.list3);
    		list1.setAdapter(new MyListAdapter(array1,this));
    		list2.setAdapter(new MyListAdapter(array2,this));
    		list3.setAdapter(new MyListAdapter(array3,this));
        }
    
    }


    后面我们自己定义一个MyListAdapter 继承BaseAdapter

    public class MyListAdapter extends BaseAdapter {
    
    	private LayoutInflater inflater;
    	private String[] array;
    	private Context mContext;
    
    	public MyListAdapter(String[] array,Context context) {
    		inflater = LayoutInflater.from(context);
    		this.array = array;
    		this.mContext =context; 
    	}
    
    	@Override
    	public int getCount() {
    		// TODO Auto-generated method stub
    		return array.length;
    	}
    
    	@Override
    	public Object getItem(int position) {
    		// TODO Auto-generated method stub
    		return array[position];
    	}
    
    	@Override
    	public long getItemId(int position) {
    		// TODO Auto-generated method stub
    		return position;
    	}
    
    	@Override
    	public View getView(int position, View convertView, ViewGroup parent) {
    		// TODO Auto-generated method stub
    		convertView = inflater.inflate(R.layout.item, null);
    		TextView tv = (TextView) convertView.findViewById(R.id.text);
    		tv.setText(array[position]);
    		if (array.length == 1) {
    			setBackgroundDrawable(convertView,
    					R.drawable.list_round_selector);
    		} else if (array.length == 2) {
    			if (position == 0) {
    				setBackgroundDrawable(convertView,
    						R.drawable.list_top_selector);
    			} else if (position == array.length - 1) {
    				setBackgroundDrawable(convertView,
    						R.drawable.list_bottom_selector);
    			}
    		} else {
    			if (position == 0) {
    				setBackgroundDrawable(convertView,
    						R.drawable.list_top_selector);
    			} else if (position == array.length - 1) {
    				setBackgroundDrawable(convertView,
    						R.drawable.list_bottom_selector);
    			} else {
    				setBackgroundDrawable(convertView,
    						R.drawable.list_rect_selector);
    			}
    		}
    		return convertView;
    	}
    
    	private void setBackgroundDrawable(View view, int resID) {
    		view.setBackgroundDrawable(mContext.getResources().getDrawable(resID));
    	}
    }
    
    


    效果图:


       

  • 相关阅读:
    weblogic12c 2021.4.20 季度补丁 SPB
    一顿debug猛如虎,原来内存OOM
    JDK记录一下
    213. 打家劫舍 II-动态规划-中等
    5526. 最多可达成的换楼请求数目-回溯-困难
    1584. 连接所有点的最小费用-图/最小生成树-中等
    Java-泛型的限制
    Java-泛型-桥方法
    889. 根据前序和后序遍历构造二叉树-树-中等
    1109. 航班预订统计-差分数组-中等
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6703958.html
Copyright © 2011-2022 走看看