Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 給自定義View添加xml屬性

給自定義View添加xml屬性

編輯:關於Android編程

筆者之前已經寫過了一些自定義View的文章,在此對其也就不從頭說起了,如有興趣的讀者可以看一下筆者的前兩篇文章。

筆者之前的文章中僅僅介紹了如何使用自定義View以及為什麼要使用自定義View等等,但是在實際操作中,我們還是希望自定義View之後,直接能夠在xml中就對其進行操作,如下圖:
這裡寫圖片描述

這裡寫圖片描述

那麼如何操作呢?主要是三個步驟:

1、自定義屬性名稱

2、將屬性名稱與控件關聯

3、從第三方命名空間獲取到自定義屬性名稱

主要代碼:
這裡寫圖片描述

1、自定義屬性名稱

首先要在values文件中創建一個xml文件,並且在其中寫上你需要的自定義屬性的名稱以及類型。
這裡寫圖片描述

atts.xml中代碼如下:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">

2、將屬性名稱與控件關聯

此點比較簡單,直接看代碼:
MyView.java

package com.example.double2.viewxmltest;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * 項目名稱:ViewXmlTest
 * 創建人:Double2號
 * 創建時間:2016/8/4 10:23
 * 修改備注:
 */
public class MyView extends LinearLayout {

    private int colorText;
    private String textLeft;
    private String textTitle;
    private String textRight;
    private TextView tvLeft;
    private TextView tvTitle;
    private TextView tvRight;

    public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

        //從xml的屬性中獲取到字體顏色與string
        TypedArray ta=context.obtainStyledAttributes(attrs,R.styleable.MyTitle);
        colorText=ta.getColor(R.styleable.MyTitle_textColor,Color.BLACK);
        textLeft=ta.getString(R.styleable.MyTitle_leftText);
        textTitle=ta.getString(R.styleable.MyTitle_titleText);
        textRight=ta.getString(R.styleable.MyTitle_rightText);
        ta.recycle();

        //獲取到控件
        //加載布局文件,與setContentView()效果一樣
        LayoutInflater.from(context).inflate(R.layout.my_view, this);
        tvLeft=(TextView)findViewById(R.id.tv_left);
        tvTitle=(TextView)findViewById(R.id.tv_title);
        tvRight=(TextView)findViewById(R.id.tv_right);

        //將控件與設置的xml屬性關聯
        tvLeft.setTextColor(colorText);
        tvLeft.setText(textLeft);
        tvTitle.setTextColor(colorText);
        tvTitle.setText(textTitle);
        tvRight.setTextColor(colorText);
        tvRight.setText(textRight);

    }


}

my_view.xml




    

    

    

3、從第三方命名空間獲取到自定義屬性名稱

此處要注意在activity_main.xml要申明第三方命名空間(在android studio中只需要用res-auto,在eclipse中就需要加上完整的包名,如下圖)
注:my_view只是使用時的一個名稱而已,後方的“http://schemas.android.com/apk/res-auto”才是真正有用的。
這裡寫圖片描述

這裡寫圖片描述

activity_main.xml




    


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved