android listview边框颜色,Android实现带有边框的ListView和item的方法
本文实例讲述了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的方法相关推荐
- android shape 无边框颜色,Android 使用shape定义不同控件的的颜色、背景色、边框色...
Android 使用shape定义不同控件的的颜色.背景色.边框色 设置按钮的右边框和底边框颜色为红色,边框大小为3dp: 在drawable新建一个 buttonstyle.xml的文件,内容如下: ...
- html下拉框如何加边框颜色,css如何加边框颜色?
css可以使用border-color 属性来为边框加颜色.border-color 属性是一个简写属性,可设置一个元素的所有边框中可见部分的颜色,或者为 4 个边分别设置不同的颜色. css可以使用 ...
- android按钮背景颜色函数,Android按钮背景颜色(Android button background color)
Android按钮背景颜色(Android button background color) 我想在我的应用程序中设置按钮的背景颜色,我无法实现我想要的结果... 我试图设置的颜色是holo_gree ...
- php如何设置表格边框颜色代码,html表格边框颜色怎么设置_WEB前端开发
ps中返回上一步快捷键是什么_WEB前端开发 ps中返回上一步快捷键是Ctrl+Z.Ctrl+Z意思为撤销,即可以实现返回上一步的效果,Ctrl+Z快捷键可用在大部分软件中,不仅仅是ps. table ...
- android code修改border颜色,Android自定义TextView边框颜色(动态改变边框颜色以及字体颜色)...
最近写了一个带边框的TextView,因为项目中有许多地方需要用到一个带边框的TextView,而且需要根据不同的状态显示不同的边框颜色,当时的第一反应就是用shape做,但后来转念一想这要需要定义多 ...
- android切换字体颜色,Android开发实现按钮点击切换背景并修改文字颜色的方法
本文实例讲述了Android开发实现按钮点击切换背景并修改文字颜色的方法.分享给大家供大家参考,具体如下: 其实原理很简单,用到的是selector,用来设置android:background和an ...
- android 动态添加颜色,Android绘制一个三角形并且可动态改变颜色
方法一: 这种方法的三角形角度没法控制,因为其实是矩形旋转. android:fromDegrees="45" android:pivotX="135%" an ...
- android开发按钮颜色,Android编程实现简单设置按钮颜色的方法
本文实例讲述了Android编程实现简单设置按钮颜色的方法.分享给大家供大家参考,具体如下: 1.工程目录 a.在res目录-新建drawble文件夹放入自定义图片 2.main.xml androi ...
- java去掉图片边框颜色_sharp 去除图片边框
trim接受参数是颜色相似度, 并不能指定边框颜色, 所以有可能会误删除内容, 需要注意 trim 需要转为buffer或者文件后再次操作, 否则图片信息不变 从剪裁效果来看, 精度和速度都是可以的 ...
最新文章
- Elasticsearch1.x 基于lc-pinyin和ik分词实现 中文、拼音、同义词搜索
- 火爆网络的《神经网络与深度学习》,有人把它翻译成了中文版!
- java集合框架介绍_Java集合框架介绍
- c #include如何找到文件_如何用C编写自己的头文件?
- svgsprite的svg-sprite-loader在vue中的使用及vue-cli如何配置
- 再次实践 MySQL chart - 每天5分钟玩转 Docker 容器技术(166)
- java向飞秋发文件_Java 给飞秋发送消息
- feather 设置坐标刻度_matplotlib学习记录:调整刻度范围和刻度标签
- UIAlertController 类似相册拍照弹出框
- SpringBoot项目的mybatis逆向工程
- 在 chrome 中使用 coap 调试插件 copper
- JavaEE高级框架学习笔记(八)Struts高级ActionForm
- 现代信号处理 张贤达_信号处理领域科学家、清华教授张贤达逝世 享年74岁
- 德国AI“算个球”:西班牙是冠军,只要别让德国进八强(严谨推理)
- mac 全局安装 Cz 工具【踩坑】
- dd命令创建一个大文件
- 小程序全局拖动悬浮球插件
- 递归习题—排队游戏(C程序设计进阶 第3周)
- 基于DeepDive实现从股权交易公告获取企业与企业之间存在交易关系的概率--实践篇
- 文件服务器定时开关机,服务器设置定时开关机
热门文章
- linux下lsof命令,Linux lsof命令使用详解
- mac安装和卸载mysql_mysql的安装与卸载
- linux awk 管道,shell使用管道,配合awk,一句代码清空大于设定大小的日志文件
- java如何画矩形条和填充_java.awt.Graphics 类的哪个方法可绘制填充矩形?
- Spring+springmvc+hibernate+redis整合配置文件
- 基于Python+Django的失物招领平台系统设计
- linux应用调用内核函数,Hooking linux内核函数(一):寻找完美解决方案
- windows常见快捷键
- Adaboost、RandomFrest、GBRT的区别
- WebRTC 学习之 WebRTC 简介