服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android实现简单卡片布局

Android实现简单卡片布局

2022-08-11 10:29Ricky_Fung Android

这篇文章主要为大家详细介绍了Android实现卡片布局的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

googlenow是android4.1全新推出的一款应用他,它可以全面了解你的使用习惯,并为你提供现在或者未来可能用到的各种信息,googlenow提供的信息关联度较高,几乎是瞬间返回答案,总而言之,googlenow是google提出的全新搜索概念。当然,googlenow最为引人注目的当属它的卡片式设计。google自家应用纷纷采用卡片布局(google now,google plus,google play)。

Android实现简单卡片布局

Android实现简单卡片布局

在最新的qq空间、新浪微博、豌豆荚中也可以见到卡片式设计的影子

Android实现简单卡片布局

Android实现简单卡片布局

下面介绍一种简单实现卡片布局的方式

list_item.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 tools:context=".mainactivity"
 android:background="@drawable/radius_bg">
 
 <imageview
 android:id="@+id/iv_logo"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignparentleft="true"
 android:layout_margin="8dp"
 android:src="@drawable/ic_launcher" />
 
 <textview
 android:id="@+id/tv_name"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_aligntop="@id/iv_logo"
 android:layout_torightof="@id/iv_logo"
 android:text="@string/hello_world"
 android:textsize="16sp" />
 
 <textview
 android:id="@+id/tv_desc"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_below="@id/tv_name"
 android:layout_margintop="5dp"
 android:layout_torightof="@id/iv_logo"
 android:text="@string/hello_world"
 android:textsize="13sp" />
 
</relativelayout>

自定义shape图片radius_bg.xml

?
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
 <corners android:radius="3dp"/>
 <solid android:color="#ffffff"/>
</shape>

主界面布局

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".mainactivity"
 android:background="#e6e6e6">
 
 <listview
 android:id="@+id/mlistview"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:divider="@android:color/transparent"
 android:paddingleft="10dp"
 android:paddingright="10dp"
 android:paddingtop="2dp"
 android:paddingbottom="2dp"
 android:dividerheight="10dp" >
 </listview>
 
</relativelayout>

card实体

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.example.carduitest.model;
 
public class card {
 private string name;
 private string desc;
 private int icon;
 
 public card(string name, string desc) {
 this.name = name;
 this.desc = desc;
 }
 
 public string getname() {
 return name;
 }
 public void setname(string name) {
 this.name = name;
 }
 public string getdesc() {
 return desc;
 }
 public void setdesc(string desc) {
 this.desc = desc;
 }
 public int geticon() {
 return icon;
 }
 public void seticon(int icon) {
 this.icon = icon;
 }
}

自定义适配器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.example.carduitest.adapter;
 
import java.util.list;
 
import com.example.carduitest.r;
import com.example.carduitest.model.card;
import android.content.context;
import android.view.layoutinflater;
import android.view.view;
import android.view.viewgroup;
import android.widget.baseadapter;
import android.widget.textview;
 
public class cardadapter extends baseadapter {
 private list<card> data;
 private context context;
 private layoutinflater minflater;
 
 public cardadapter(list<card> data, context context) {
 this.data = data;
 this.context = context;
 minflater = layoutinflater.from(context);
 }
 
 @override
 public int getcount() {
 // todo auto-generated method stub
 return data.size();
 }
 
 @override
 public object getitem(int position) {
 // todo auto-generated method stub
 return data.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) {
 viewholder holder;
 if(convertview==null){
 convertview = minflater.inflate(r.layout.list_item, null);
 
 holder = new viewholder();
 holder.tv_name = (textview) convertview.findviewbyid(r.id.tv_name);
 holder.tv_desc = (textview) convertview.findviewbyid(r.id.tv_desc);
 
 convertview.settag(holder);
 }else{
 holder = (viewholder) convertview.gettag();
 }
 
 card card = data.get(position);
 holder.tv_name.settext(card.getname());
 holder.tv_desc.settext(card.getdesc());
 
 return convertview;
 }
 
 static class viewholder{
 textview tv_name;
 textview tv_desc;
 }
 
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.example.carduitest;
 
import java.util.arraylist;
import java.util.list;
 
import com.example.carduitest.adapter.cardadapter;
import com.example.carduitest.model.card;
 
import android.os.bundle;
import android.app.activity;
import android.view.menu;
import android.widget.listview;
 
public class mainactivity extends activity {
 
 private list<card> data = new arraylist<card>();
 
 @override
 protected void oncreate(bundle savedinstancestate) {
 super.oncreate(savedinstancestate);
 setcontentview(r.layout.activity_main);
 
 initdata();
 listview mlistview = (listview) findviewbyid(r.id.mlistview);
 
 cardadapter madapter = new cardadapter(data,this);
 mlistview.setadapter(madapter);
 }
 
 private void initdata() {
 
 for(int i=0;i<50;i++){
 card card = new card("card ui example "+i, "very good");
 data.add(card);
 }
 }
 
 @override
 public boolean oncreateoptionsmenu(menu menu) {
 // inflate the menu; this adds items to the action bar if it is present.
 getmenuinflater().inflate(r.menu.main, menu);
 return true;
 }
 
}

运行效果如下:

p>Android实现简单卡片布局

当然啦,github上面也有专门的实现card的library,这里列举两个不错的library

cardslib:地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/top_code/article/details/17842759

延伸 · 阅读

精彩推荐