`

圆角背景的ListView

阅读更多


先定义一张圆角的图片shape_bg_listview.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
       android:shape="rectangle"
       >
       <gradient  
       android:startColor="@android:color/white"  
       android:endColor="#FFCCCCCC"  
       android:angle="180" 
       />
       <stroke android:width="0px" 
       android:color="@android:color/white" 
       /> 
       <solid android:color="@android:color/white" 
       /> 
       <corners 
       android:bottomRightRadius="20px" 
       android:bottomLeftRadius="20px" 
       android:topLeftRadius="20px" 
       android:topRightRadius="20px" 
       />
</shape> 


然后在ListView中引用它,注意android:listSelector为了去掉选中效果:
<ListView android:id="@+id/list" 
		android:layout_width="fill_parent" 
		android:layout_height="wrap_content"
		android:layout_margin="20.0dip"
		android:cacheColorHint="@null" 
                android:listSelector="@drawable/shape_bg_listview"
		android:background="@drawable/shape_bg_listview"
		/>


代码:
public class App extends Activity {
	private ListView mListView = null;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ArrayList<String> list =new ArrayList<String>();
        list.add("1");
        list.add("2");
        list.add("3");
        mListView =  (ListView)findViewById(R.id.list);
        mListView.setAdapter(new AppAdapter(this,list));
    }
    
    class AppAdapter extends BaseAdapter{

    	Context context;
    	ArrayList<String> list;
    	AppAdapter(Context context,ArrayList<String> list){
    		this.context=context;
    		this.list=list;
    	}
		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return list.size();
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return list.get(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
			TextView tv;
			if(convertView==null){
				convertView=LayoutInflater.from(context).inflate(R.layout.simple_item_2, null);
			}
			tv=(TextView)convertView.findViewById(R.id.name);
			tv.setText(list.get(position));
			return convertView;
		}
    	
    }
}


simple_item_2.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"
	>
	<TextView
		android:id="@+id/name"
		android:textSize="17.0sp"
		android:textColor="@android:color/black"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:layout_marginLeft="20.0dip"
		android:layout_alignParentLeft="true"
		android:layout_centerVertical="true"
		>
	</TextView>
	<ImageView
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:layout_marginRight="20.0dip"
		android:src="@drawable/arrow"
		android:layout_alignParentRight="true"
		android:layout_centerVertical="true"
		>
	</ImageView>
</RelativeLayout>



ListView子项的圆角效果,也可通过以下实现,转自http://www.eoeandroid.com/thread-102663-1-1.html:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#253853"
    >
    <ListView android:id="@+id/list" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent"
		android:layout_marginBottom="10dp"          
        android:cacheColorHint="#00000000"
        android:divider="#2A4562"
        android:dividerHeight="4px"
        android:listSelector="#264365"
        android:drawSelectorOnTop="false"
        />
</LinearLayout>


list_item.xml的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:background="@drawable/selector"
	>
	<ImageView android:id="@+id/img"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"                      
		android:layout_gravity="center_vertical"
		android:layout_marginLeft="20dp" 
		/>
	<LinearLayout android:orientation="vertical" 
		android:layout_width="fill_parent"  
		android:layout_height="wrap_content">                                                      
		<TextView android:text="data" android:id="@+id/title"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="center_vertical"
			android:layout_marginLeft="20dp"
			android:layout_marginTop="20dp"
			android:textSize="14sp"
			android:textStyle="bold"
			android:textColor="@color/black"
			/>
    </LinearLayout>
</LinearLayout>


selector.xml的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
	<item android:state_selected="true">
		<shape>
			<gradient android:angle="270" android:startColor="#A5D245"
				android:endColor="#99BD4C" />
			<padding android:left="15dip" android:top="20dip"
				android:right="15dip" android:bottom="20dip" />
			<size android:width="320dip" android:height="60dip" />
			<corners android:radius="8dip" />
		</shape>
	</item>
	<item android:state_pressed="true">
		<shape>
			<gradient android:angle="270" android:endColor="#99BD4C"
				android:startColor="#A5D245" />
			<padding android:left="15dp" android:top="20dp"
				android:right="15dp" android:bottom="20dp" />
			<size android:height="60dp" android:width="320dp" />
			<corners android:radius="8dp" />
		</shape>
	</item>
	<item>
		<shape>
			<gradient android:angle="270" android:endColor="#A8C3B0"
				android:startColor="#C6CFCE" />
			<padding android:left="15dp" android:top="20dp"
				android:right="15dp" android:bottom="20dp" />
			<size android:height="60dp" android:width="320dp" />
			<corners android:radius="8dp" />
		</shape>
	</item>
</selector>


效果图如下:




  • 大小: 4.1 KB
  • 大小: 41.8 KB
  • 大小: 48.2 KB
分享到:
评论
1 楼 纳木那咔 2011-11-20  
提供的源代码跟讲解完全不是一个...源码只是在选择器上加了各种情况的圆角显示,跟上面讲解的xml没看到哪里用上了,不知道楼主写的到底是什么

相关推荐

    自定义listview 圆角listviewitem 处理 选中背景处理

    然而,为了提升用户体验和界面美观,我们经常需要对ListView进行定制,比如让ListView的每一项(ListItem)具有圆角效果,或者在选中时改变背景。本文将深入探讨如何实现自定义的圆角ListView项以及处理选中背景。 ...

    Android仿ios圆角分组listView

    在Android开发中,为了提供与iOS相似的用户体验,开发者经常需要实现特定的界面设计,比如圆角分组的ListView。本篇文章将详细讲解如何在Android中实现“Android仿ios圆角分组listView”这一技术。 首先,我们需要...

    圆角Listview

    例如,可以创建一个名为`list_item.xml`的布局文件,其中包含一个具有圆角背景的LinearLayout或CardView。 ```xml &lt;solid android:color="#FFFFFF"/&gt; &lt;!-- 背景色 --&gt; &lt;corners android:radius="8dp"/&gt; &lt;!-- ...

    Android 实现圆角ListView实例

    接下来,我们为ListView的每一项(Item)设置这个圆角背景。这需要在Adapter中进行操作。创建一个自定义的Adapter,例如`MyListAdapter`,继承自`BaseAdapter`。在`getView()`方法中,找到Item的根布局并设置背景: ...

    圆角listview

    这个Shape可以作为ListView项的背景,赋予其圆角效果。 3. **自定义EditText** 要实现带删除图标的EditText,我们需要在EditText内部添加一个ImageView作为删除图标。这可以通过设置EditText的`drawableRight`属性...

    android圆角的listview

    然而,有时候我们希望让ListView的每一项视图(Item View)具有圆角效果,以增强界面的美观性和用户体验。本文将深入探讨如何实现Android中的圆角ListView。 首先,我们需要理解ListView的工作原理。ListView通过...

    ListView的圆角效果

    2. 自定义ListView项的视图,同样通过重写`onDraw()`或使用XML drawable设置圆角背景。 3. 在Adapter中设置自定义的视图和背景。 4. 考虑滚动时的缓存问题,确保圆角效果不会丢失。 这个压缩包文件"ListView的圆角...

    Android ListView边框圆角美化

    为了提升用户体验和界面设计的美观性,我们常常需要对ListView进行定制化,包括设置边框和实现圆角效果。本文将深入探讨如何在Android中实现ListView的边框圆角美化,以此来达到类似iPhone界面的视觉效果。 首先,...

    listview圆角列表demo

    在自定义Adapter中,我们需要覆写`getView()`方法,在这个方法里对每项的布局进行填充和定制,包括设置圆角背景。 3. **设置View的背景**: 在`getView()`方法内,我们可以为每个列表项设置自定义的圆角背景。这可以...

    与圆角listView类似的效果

    "与圆角ListView类似的效果"就是一个这样的尝试,它通过使用TextView模拟了ListView的展示方式,并添加了圆角以及点击效果。下面将详细探讨如何实现这样的功能。 首先,我们来理解"圆角ListView"的概念。传统的...

    ListView、ListBox背景样式

    ### WPF/C#中ListView与ListBox的背景样式及选中行样式详解 #### 一、概述 在WPF(Windows Presentation Foundation)应用开发中,`ListView`和`ListBox`是两个非常常用的数据展示控件。它们能够以列表的形式展示...

    Android实现iphone圆角ListView和点击的效果

    在这个布局文件中,你可以定义一个具有圆角背景的LinearLayout或CardView。例如: ```xml android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/round_...

    listview圆角示例源码

    3. **设置ListView的背景**:除了设置项布局,还可以通过设置ListView本身的背景来实现全局的圆角效果。但这种方法可能会影响到滑动时的视觉体验,因为ListView在滚动时可能会显示部分未被圆角化的边界。 4. **使用...

    ListView圆角分块显示

    你需要创建一个继承自BaseAdapter的类,重写其`getView()`方法,在这里根据数据动态设置每项的圆角背景和内容。 5. **性能优化**:由于ListView需要频繁地创建和复用视图,因此在自定义适配器的`getView()`方法中,...

    Android圆角ListView并完美解决和ScrollView共存问题

    首先,实现圆角ListView的关键在于自定义ListView的背景。这可以通过创建一个自定义的Shape XML文件来完成,例如`rounded_corner_listview_background.xml`。在该文件中,我们可以定义一个矩形,并设置其四个角为...

    android listview圆角实现

    要实现ListView的圆角效果,我们可以利用自定义ViewGroup和Adapter来达到目的。以下将详细讲解如何在Android中为ListView实现圆角。 首先,我们需要创建一个自定义的ListView,这通常涉及到继承AbsListView或...

    Android列表之圆角ListView选中(二)

    在这个方法里,我们将为每个item设置圆角背景。 1. **自定义圆角布局** - 创建一个XML布局文件,如`list_item.xml`,用于定义每个ListView item的视图结构。可以添加ImageView、TextView等组件,并设置边框为圆角...

Global site tag (gtag.js) - Google Analytics