• Android中自己定义组件和它的属性


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

    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("在程序中加入的文字");


  • 相关阅读:
    使用Modelsim对Nios II系统进行系统级仿真
    电视相关知识学习
    SAD和SATD的区别[摘]
    vim自动补全括号的最好方法
    vim sinppets插件介绍
    在centos下安装开发环境
    初始化以及动态设置Edit控件的背景及字体颜色
    CTreeCtrl SetItemData 释放问题
    C#4.0 新特性 匿名方法,lambds
    对象序列化Serialization与Deserialize方法进行反序列化
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5251625.html
Copyright © 2020-2023  润新知