android 自定义控件 attrs,android 使用attrs自定义控件

android 自定义控件 attrs,android 使用attrs自定义控件步骤:1、在values下新建一个attrs.xml的资源文件(my_attrs.xml)//===》name为引用资源的名称//attr中的name为自定义的名称format为类型//字体颜色//字体大小//字符串2、新建一个类MyAttrsMyView继承View覆写publicMyAttrsMyView(Contextcontext,Attribu…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

步骤:

1、在values下新建一个attrs.xml的资源文件(my_attrs.xml)

    //===》name为引用资源的名称

// attr中的 name为自定义的名称   format 为类型

  // 字体颜色

  //字体大小

   //字符串

2、新建一个类MyAttrsMyView继承 View

覆写public MyAttrsMyView(Context context, AttributeSet attrs)方法

@SuppressLint(“NewApi”)

public MyAttrsMyView(Context context, AttributeSet attrs) {

super(context, attrs);

// TODO Auto-generated constructor stub

mPaint = new Paint();    //定义画笔

imageView = new ImageView(context);   //图片

imageView.setImageResource(R.drawable.ww);  //加载图片资源

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.My_attrs);   //获取自定义的attrs中的资源

float textsize = a.getDimension(R.styleable.My_attrs_TextSize, 40);

int c = a.getColor(R.styleable.My_attrs_TextColor, 0x990000FF);

s = a.getString(R.styleable.My_attrs_Text);

mPaint.setColor(c);

mPaint.setTextSize(textsize);

a.recycle(); //结束标记

}

@Override

protected void onDraw(Canvas canvas) {

// TODO Auto-generated method stub

super.onDraw(canvas);

//canvas.drawRect(new Rect(10, 10, 280, 200), mPaint);

//((BitmapDrawable)imageView.getDrawable()).getBitmap() ;将imageview转换成bitmap

canvas.drawBitmap(((BitmapDrawable)imageView.getDrawable()).getBitmap(), 1, 20, mPaint);

//canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ww), 10, 10, mPaint);

canvas.drawText(s, 1, 100, mPaint);

}

3、最后一步

第一种写法    在activity中 , 直接new出自定义的类即可

MyView = new MyAttrsMyView(this,null);

setContentView(MyView);

第二种写法    利用xml

1、在xml中 

2、在其根布局 添加声明  :  xmlns:ymy(自己起的名)=”http://schemas.android.com/apk/res/项目的主包名”

3、给自定义的控件中添加attrs 中定义好的属性  :  ymy:Text = “顺丰快递”

xmlns:ymy=”http://schemas.android.com/apk/res/com.ming”

android:layout_width=”match_parent”

android:layout_height=”match_parent”

android:orientation=”vertical” >

android:layout_width=”400dp”

android:layout_height=”300dp”

ymy:TextColor = “#ABCDEFEF”         ymy:Text = “顺丰快递”         ymy:TextSize = “12sp”         />

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180882.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于物品的协同过滤算法:理论说明,代码实现及应用「建议收藏」

    基于物品的协同过滤算法:理论说明,代码实现及应用「建议收藏」基于物品的协同过滤算法:理论说明,代码实现及应用标签:爬虫Python主要参考资料:项亮.推荐系统实践[M].北京:人民邮电出版社,2012.转载请注明出处:sss0.一些碎碎念从4月中旬开始,被导师赶到北京的郊区搬砖去了,根本就没有时间学习看书,这个时候才知道之前的生活是多么的幸福:每天看自己想看的书,然后实践一下,最后写博文总结一下,偶尔还能去跑个步,游个泳。想找实习的计划也泡汤了

    2022年6月26日
    23
  • rabbit mq exchange_exchange设置公司邮箱

    rabbit mq exchange_exchange设置公司邮箱上一篇,我们介绍了rabbimtmq的简单工作队列的使用方式,即生产者和消费者之间直接通过绑定相同的workqueue进行消息的发送和接收,如果业务逻辑比较简单,这样的方式也是可以用的,但在实际工作中,实际的业务场景远远比这个复杂,而且需要更加细粒度的对消息进行进行分发和接收,这就需要用到rabbitmq的另外一个组件exchange;顾名思义,exchange在rabbitmq中翻译为交换机…

    2022年10月3日
    1
  • webstorm激活码2021年【注册码】

    webstorm激活码2021年【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    63
  • Asp.net Session 与Cookie的应用

    写程序的很多人都知道的,Session是服务器端的东西而Cooike是客户端的东西。因为B/S模式是无状态模式,它们的应用都是要存储客户端的某些登录或是加密的信息。Session存在于服务器端,当然

    2021年12月27日
    40
  • 什么是分区容错性?[通俗易懂]

    什么是分区容错性?[通俗易懂]这个回答我觉得一个知乎上的老哥说的特别好,我把他的话引用过来。原回答地址:https://www.zhihu.com/question/54105974一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。数据就散布在了这些不连通的区域中。这就叫分区。当你一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了。这时分区就是无法容忍的。提高分区容忍性的办法就是一个数据项复制到多个节点.

    2022年7月25日
    13
  • NoSQL之Redis数据库初探

    一、NoSQL的风生水起1.1后Web2.0时代的发展要求随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经

    2021年12月28日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号