CardView的一些属性:
CardView 其实就是个帧布局,5.0后新出的一种控件
在gradle文件下添加依赖库:
compile ‘com.android.support:cardview-v7:26.0.0-alpha1’
app:cardBackgroundColor这是设置背景颜色
app:cardCornerRadius这是设置圆角大小
app:cardElevation这是设置z轴的阴影
app:cardMaxElevation这是设置z轴的最大高度值
app:cardUseCompatPadding是否使用CompatPadding
app:contentPadding文本内容边距
用RecyclerView来实现CardView的线性布局Demo
public class CardViewDemo extends AppCompatActivity {
private List<CityInfo> mCityInfos ;
private RecyclerView mRecyClerView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main1);
initView();
//准备数据
initData();
//设置布局
mRecyClerView.setLayoutManager(new LinearLayoutManager(this));
//设置适配器
mRecyClerView.setAdapter(new CityRecyclerAdapter(this));
}
private void initView() {
mRecyClerView = (RecyclerView) findViewById(R.id.recyclerview);
}
private void initData() {
mCityInfos = new ArrayList<>();
for (int i = 0; i < 9; i++) {
CityInfo city = new CityInfo(R.mipmap.dizhonghai_line,"地中海");
CityInfo city1 = new CityInfo(R.mipmap.rihan_line,"日韩");
CityInfo city2 = new CityInfo(R.mipmap.hotline,"热线");
mCityInfos.add(city);
mCityInfos.add(city1);
mCityInfos.add(city2);
}
}
/**
* RecyclerView继承adapter加自定义的Holder泛型
* onCreateViewHolder();方法用来加载item布局
* onBindViewHolder();用来设置控件
* getItemCount();返回item个数
*/
class CityRecyclerAdapter extends RecyclerView.Adapter<CityViewHolder> {
private Context context;
public CityRecyclerAdapter(Context context) {
this.context = context;
}
@Override
public CityViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//
View view = LayoutInflater.from(context).inflate(R.layout.item_city, null);
return new CityViewHolder(view);
}
@Override
public void onBindViewHolder(CityViewHolder holder, int position) {
CityInfo cityInfo = mCityInfos.get(position);
holder.mCityName.setText(cityInfo.getCityName());
holder.mCityIcon.setImageResource(cityInfo.getCityPath());
}
@Override
public int getItemCount() {
return mCityInfos.size();
}
}
/**
* 自定义的RecyclerHolder 继承 RecyclerView.ViewHolder
* 可以直接在ViewHolder构造器里find控件,再不用去适配器里find
*/
class CityViewHolder extends RecyclerView.ViewHolder{
private ImageView mCityIcon;
private TextView mCityName;
public CityViewHolder(View itemView) {
super(itemView);
mCityIcon = itemView.findViewById(R.id.img_icon);
mCityName = itemView.findViewById(R.id.tv_name);
}
}