好长时间没有更新博客了。本来想积累点有深度的东西发,但一直没有找到非常好的点。所以。写一些基础的东西。就当积累吧。

Android开发中难免会用到自己定义的组件。以下以ImageButton为例来介绍怎么自己定义组件和它的属性:

第一步、在values/attrs.xml中为组件自己定义属性:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="CustomBtn">
        <attr name="text" format="string"/>
        <attr name="textColor" format="color" />
        <attr name="textSize" format="dimension" />
    </declare-styleable>
</resources>

第二步、重写ImageButton类:
public class CustomBtn extends ImageButton
{
 private Paint paint;
 private String text;
 
 public CustomBtn(Context context, AttributeSet attrs)
 {
  super(context, attrs);
 
  paint=new Paint();
  TypedArray typeArray=context.obtainStyledAttributes(attrs,R.styleable.CustomBtn);
  int color=typeArray.getColor(R.styleable.CustomBtn_textColor,Color.WHITE);
  float textSize=typeArray.getDimension(R.styleable.CustomBtn_textSize,20);
  text=typeArray.getString(R.styleable.CustomBtn_text);
 
  paint.setTextAlign(Align.CENTER);
  paint.setColor(color);
  paint.setTextSize(textSize);
  typeArray.recycle();
 }
 
 @Override
 protected void onDraw(Canvas canvas)
 {
  super.onDraw(canvas);
  canvas.drawText(text,canvas.getWidth()/2,canvas.getHeight()/2+10, paint);
 }

 public String getText() {
  return text;
 }

 public void setText(String text) {
  this.text = text;
 }
}

第三步、在布局文件里使用CustomBtn:
当中xmlns:custombtn中为AndroidManifest.xml中的包名

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custombtn="http://schemas.android.com/apk/res/com.yeahis.shuyudragstore"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="@dimen/market_category_height"
android:background="@drawable/mall_category_item">

<com.yeahis.shuyudragstore.widget.CustomBtn
android:id="@+id/mall_category_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:background="@android:color/transparent"
android:src="@drawable/mall_category_title"
custombtn:text="@string/mall_category_title"
custombtn:textColor="@android:color/black"
custombtn:textSize="15sp"/>

</RelativeLayout>

第四步、假设想要在程序中动态改变CustomBtn上的文字则在程序中这样:
比如CustomBtn customBtn=(CustomBtn) convertView.findViewById(R.id.mall_category_btn);

customBtn.setText("在程序中加入的文字");


Android中自己定义组件和它的属性的更多相关文章

  1. Android中Broadcast Receiver组件具体解释

    BroadcastReceiver(广播接收器)是Android中的四大组件之中的一个. 以下是Android Doc中关于BroadcastReceiver的概述: ①广播接收器是一个专注于接收广播 ...

  2. 【Android中Broadcast Receiver组件具体解释 】

    BroadcastReceiver(广播接收器)是Android中的四大组件之中的一个. 以下是Android Doc中关于BroadcastReceiver的概述: ①广播接收器是一个专注于接收广播 ...

  3. 详解Android中的四大组件之一:Activity详解

    activity的生命周期 activity的四种状态 running:正在运行,处于活动状态,用户可以点击屏幕,是将activity处于栈顶的状态. paused:暂停,处于失去焦点的时候,处于pa ...

  4. android中使用spinner组件,以key,value的方式

    接着上一篇文章的内容:android中使用spinner组件 稍做修改,以key,value的方式,在实际使用中,经常需要获取的值并不一定跟显示的内容一致. 需要先添加一个对象类,用来描述key,va ...

  5. 关于Android中的四大组件(Service的开启与关闭)

    前言 服务(Service)是Android系统中的四大组件之中的一个.服务主要用于两个目的:后台执行和跨进程訪问. 通过启动 一个服务.能够在不显示界面的前提下在后台执行指定的任务,这样能够不影响用 ...

  6. 3.React Native在Android中自己定义Component和Module

    React Native终于展示的UI全是Native的UI.将Native的信息封装成React方便的调用. 那么Native是怎样封装成React调用的?Native和React是怎样交互的? V ...

  7. android中的Serveice组件

    创建 配置 Service: 1.定义一个继承了Service类的子类 2.在 AndroidManifest.xml清单文件中对开发的Service进行配置 Service和Activity很相似, ...

  8. React 中的 定义组件的 两种方式

    React 中创建 Components 的方式有两种:Function and Class 定义一个组件最简单的方法就是写一个 JavaScript 函数 function Welcome(prop ...

  9. Android笔记(十五) Android中的基本组件——单选框和复选框

    单选框和多选框通常用来在设置用户个人资料时候,选择性别.爱好等,不需要用户直接输入,直接在备选选项中选择,简单方便. 直接看代码: <?xml version="1.0" e ...

随机推荐

  1. hl7 java 解析

    原文链接 http://blog.csdn.net/ycyangcai/article/details/6643784 Hl7引擎的目标主要是解决将数据按HL7协议的要求标准化,和标准业务的集成和不同 ...

  2. WebRTC 音视频开发

    WebRTC 音视频开发 webrtc   Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译 ...

  3. C#版-百度网盘API的实现(一)

    在这篇文章中,楼主将会给大家介绍一下,通过C# winform程序在后台模拟用户登陆百度网盘的基本思路 首先了解下模拟登陆的流程,如下: 一,访问http://www.baidu.com网站,获取BA ...

  4. qutIm编译

    官网:http://www.qutim.org/ 原文地址:http://wiki.qutim.org/en/building_from_git 依赖: Qt4-dev 4.7:http://qt-p ...

  5. delphi 编码速度提升技能

    效率,是一个永恒的主题. 本文重点强调 delphi ide 中的编码速度技能 一.TForm 窗口重用 当您在写一个管理类软件的时候,有大量的操作窗口,这些窗口会有大量共性.窗口重用就会发挥很大的作 ...

  6. 运用JavaScript构建你的第一个Metro式应用程序(on Windows 8)(一)

    原文 http://blog.csdn.net/zhangxin09/article/details/6784547 作者:Chris Sells 译: sp42   原文 包括 HTML.CSS 和 ...

  7. Twitter模块开发

    Twitter模块开发 关于Twitter这一块,自发这篇博文之后有很多人问我,有的验证成功了不跳转,或者其它原因什么的 =======我看了一下,这篇博文里面有写呀,下面以红色粗体文字注明一下 Tw ...

  8. iOS 数组里面取字典的值

    NSArray *arrData = @[@"1",@"2",@"3",@"4"]; NSArray *arrKey = ...

  9. ubuntu下vim与系统剪切板互相拷贝

    1.install xclip sudo apt-get install xclip 2. install gvim sudo apt-get install vim-gnome 此时使用 “+ 寄存 ...

  10. sql优化-总结

    1.尽量缩小数据范围. 2.能一个sql解决的,坚决不用两条sql.利用case when或decode. select month_id, corppkno, sum(exportSum_new) ...