本文实例讲述了Android实现带有边框的ListView和item的方法。分享给大家供大家参考,具体如下:

想为ListView和item四周添加边框有两种方法:

1.贴一张带有边框效果的背景图

2.自定义Draw的方法

第一种方法较第二种方法更耗系统资源,但是用法简单,只需要一张图设置为相应控件的背景即可,而第二种灵活性好些。

这次是实现带有边框的ListView和item,为此写个简单Demo 学习学习

先看下Demo运行效果吧

下面是主要代码,主要是用到Canvas.drawLine(...)代码简单,我就不??铝?/p>

BorderListView.Java

package com.borderlistview.manymore13;

import android.content.Context;

import android.content.res.Resources;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.DashPathEffect;

import android.graphics.Paint;

import android.util.AttributeSet;

import android.view.MotionEvent;

import android.view.View;

import android.widget.ListView;

public class BorderListView extends ListView{

public BorderListView(Context context) {

super(context);

}

public BorderListView(Context context, AttributeSet attrs)

{

super(context, attrs);

}

@Override

protected void onDraw(Canvas canvas) {

float width = getWidth();

float height= getHeight();

int lineWidth = 10; // 线宽十个像素

int grayColor = Color.GRAY;

Paint mLinePaint = new Paint();

mLinePaint.setColor(grayColor);

mLinePaint.setStyle(Paint.Style.STROKE);

mLinePaint.setAntiAlias(true);

mLinePaint.setStrokeWidth(lineWidth);

// 画四周的边框 注意下面的 lineWidth/2 不加的话四周的线可能不一样粗

canvas.drawLine(0f, 0+lineWidth/2, width, 0+lineWidth/2, mLinePaint);

canvas.drawLine(width-lineWidth/2, 0, width-lineWidth/2, height, mLinePaint);

canvas.drawLine(width-lineWidth/2, height-lineWidth/2, 0, height-lineWidth/2, mLinePaint);

canvas.drawLine(0+lineWidth/2, height, 0+lineWidth/2, 0,mLinePaint);

super.onDraw(canvas);

}

}

ListViewItem.java   ListView的item 添加虚线和红线

package com.borderlistview.manymore13;

import com.manymore13.MyListview.R;

import android.content.Context;

import android.content.res.Resources;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.DashPathEffect;

import android.graphics.Paint;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.FrameLayout;

import android.widget.RelativeLayout;

import android.widget.TextView;

public class ListViewItem extends RelativeLayout{

private View viewHolder;

private TextView tvEventName;

private Context c;

private FrameLayout leftFrame;

public ListViewItem(Context context) {

super(context);

LayoutInflater flater = LayoutInflater.from(context);

viewHolder = flater.inflate(R.layout.item, this);

getViewAndSetClick();

c = context;

}

private void getViewAndSetClick()

{

tvEventName = (TextView)viewHolder.findViewById(R.id.eventName);

leftFrame = (FrameLayout)viewHolder.findViewById(R.id.frame);

}

public void setEventName(String name)

{

tvEventName.setText(name);

}

public void updateView()

{

this.postInvalidate();

}

@Override

protected void dispatchDraw(Canvas canvas) {

super.dispatchDraw(canvas);

Resources res = getResources();

int grayColor = Color.GRAY;

int redColor = res.getColor(R.color.red);

int leftFramepos = leftFrame.getRight();

Paint mLinePaint = new Paint();

mLinePaint.setColor(redColor);

mLinePaint.setStyle(Paint.Style.STROKE);

mLinePaint.setStrokeWidth(2);

//画两条直线

canvas.drawLine(leftFramepos+20, 0f, leftFramepos+20, getHeight(), mLinePaint);

canvas.drawLine(leftFramepos+25, 0f, leftFramepos+25, getHeight(), mLinePaint);

// 画虚线

mLinePaint.setColor(grayColor);

DashPathEffect effect = new DashPathEffect(new float[] { 5,5, 5, 5, 5}, 3);

mLinePaint.setAntiAlias(true);

mLinePaint.setPathEffect(effect);

canvas.drawLine(0, getHeight(), getWidth(), getHeight(), mLinePaint);

}

}

MyBaseAdaper.java

package com.borderlistview.manymore13;

import java.util.List;

import android.content.Context;

import android.os.Handler;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.view.WindowManager;

import android.widget.BaseAdapter;

import android.widget.ImageView;

public class MyBaseAdaper extends BaseAdapter{

private List list;

private Context c;

MyBaseAdaper(Context c, List list)

{

this.list = list;

this.c = c;

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return list.size();

}

@Override

public Object getItem(int i) {

// TODO Auto-generated method stub

return list.get(i);

}

@Override

public long getItemId(int i) {

// TODO Auto-generated method stub

return i;

}

@Override

public View getView(int i, View view, ViewGroup viewgroup) {

ListViewItem itemView = null ;

if(view == null){

itemView = new ListViewItem(c);

}else{

itemView = (ListViewItem)view;

}

itemView.setEventName(list.get(i));

return itemView;

}

}

另外,在写本次Demo的时候报了错误,有错就改 Caused by: java.lang.NoSuchMethodException:BorderListView(Context,AttributeSet)

在 BorderListView类中加一个构造函数 搞定

public BorderListView(Context context, AttributeSet attrs)

{

super(context, attrs);

}

希望本文所述对大家Android程序设计有所帮助。

android listview边框颜色,Android实现带有边框的ListView和item的方法相关推荐

  1. android shape 无边框颜色,Android 使用shape定义不同控件的的颜色、背景色、边框色...

    Android 使用shape定义不同控件的的颜色.背景色.边框色 设置按钮的右边框和底边框颜色为红色,边框大小为3dp: 在drawable新建一个 buttonstyle.xml的文件,内容如下: ...

  2. html下拉框如何加边框颜色,css如何加边框颜色?

    css可以使用border-color 属性来为边框加颜色.border-color 属性是一个简写属性,可设置一个元素的所有边框中可见部分的颜色,或者为 4 个边分别设置不同的颜色. css可以使用 ...

  3. android按钮背景颜色函数,Android按钮背景颜色(Android button background color)

    Android按钮背景颜色(Android button background color) 我想在我的应用程序中设置按钮的背景颜色,我无法实现我想要的结果... 我试图设置的颜色是holo_gree ...

  4. php如何设置表格边框颜色代码,html表格边框颜色怎么设置_WEB前端开发

    ps中返回上一步快捷键是什么_WEB前端开发 ps中返回上一步快捷键是Ctrl+Z.Ctrl+Z意思为撤销,即可以实现返回上一步的效果,Ctrl+Z快捷键可用在大部分软件中,不仅仅是ps. table ...

  5. android code修改border颜色,Android自定义TextView边框颜色(动态改变边框颜色以及字体颜色)...

    最近写了一个带边框的TextView,因为项目中有许多地方需要用到一个带边框的TextView,而且需要根据不同的状态显示不同的边框颜色,当时的第一反应就是用shape做,但后来转念一想这要需要定义多 ...

  6. android切换字体颜色,Android开发实现按钮点击切换背景并修改文字颜色的方法

    本文实例讲述了Android开发实现按钮点击切换背景并修改文字颜色的方法.分享给大家供大家参考,具体如下: 其实原理很简单,用到的是selector,用来设置android:background和an ...

  7. android 动态添加颜色,Android绘制一个三角形并且可动态改变颜色

    方法一: 这种方法的三角形角度没法控制,因为其实是矩形旋转. android:fromDegrees="45" android:pivotX="135%" an ...

  8. android开发按钮颜色,Android编程实现简单设置按钮颜色的方法

    本文实例讲述了Android编程实现简单设置按钮颜色的方法.分享给大家供大家参考,具体如下: 1.工程目录 a.在res目录-新建drawble文件夹放入自定义图片 2.main.xml androi ...

  9. java去掉图片边框颜色_sharp 去除图片边框

    trim接受参数是颜色相似度, 并不能指定边框颜色, 所以有可能会误删除内容, 需要注意 trim 需要转为buffer或者文件后再次操作, 否则图片信息不变 从剪裁效果来看, 精度和速度都是可以的 ...

最新文章

  1. Elasticsearch1.x 基于lc-pinyin和ik分词实现 中文、拼音、同义词搜索
  2. 火爆网络的《神经网络与深度学习》,有人把它翻译成了中文版!
  3. java集合框架介绍_Java集合框架介绍
  4. c #include如何找到文件_如何用C编写自己的头文件?
  5. svgsprite的svg-sprite-loader在vue中的使用及vue-cli如何配置
  6. 再次实践 MySQL chart - 每天5分钟玩转 Docker 容器技术(166)
  7. java向飞秋发文件_Java 给飞秋发送消息
  8. feather 设置坐标刻度_matplotlib学习记录:调整刻度范围和刻度标签
  9. UIAlertController 类似相册拍照弹出框
  10. SpringBoot项目的mybatis逆向工程
  11. 在 chrome 中使用 coap 调试插件 copper
  12. JavaEE高级框架学习笔记(八)Struts高级ActionForm
  13. 现代信号处理 张贤达_信号处理领域科学家、清华教授张贤达逝世 享年74岁
  14. 德国AI“算个球”:西班牙是冠军,只要别让德国进八强(严谨推理)
  15. mac 全局安装 Cz 工具【踩坑】
  16. dd命令创建一个大文件
  17. 小程序全局拖动悬浮球插件
  18. 递归习题—排队游戏(C程序设计进阶 第3周)
  19. 基于DeepDive实现从股权交易公告获取企业与企业之间存在交易关系的概率--实践篇
  20. 文件服务器定时开关机,服务器设置定时开关机

热门文章

  1. linux下lsof命令,Linux lsof命令使用详解
  2. mac安装和卸载mysql_mysql的安装与卸载
  3. linux awk 管道,shell使用管道,配合awk,一句代码清空大于设定大小的日志文件
  4. java如何画矩形条和填充_java.awt.Graphics 类的哪个方法可绘制填充矩形?
  5. Spring+springmvc+hibernate+redis整合配置文件
  6. 基于Python+Django的失物招领平台系统设计
  7. linux应用调用内核函数,Hooking linux内核函数(一):寻找完美解决方案
  8. windows常见快捷键
  9. Adaboost、RandomFrest、GBRT的区别
  10. WebRTC 学习之 WebRTC 简介