91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中AttributeSet的實例用法

發布時間:2021-08-27 17:18:35 來源:億速云 閱讀:232 作者:chen 欄目:開發技術

這篇文章主要介紹“Android中AttributeSet的實例用法”,在日常操作中,相信很多人在Android中AttributeSet的實例用法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Android中AttributeSet的實例用法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

public interface AttributeSet {
    /**
     * Returns the number of attributes available in the set.
     * 
     * @return A positive integer, or 0 if the set is empty.
     */
    public int getAttributeCount();

    /**
     * Returns the name of the specified attribute.
     * 
     * @param index Index of the desired attribute, 0...count-1.
     * 
     * @return A String containing the name of the attribute, or null if the
     *         attribute cannot be found.
     */
    public String getAttributeName(int index);

    /**
     * Returns the value of the specified attribute as a string representation.
     * 
     * @param index Index of the desired attribute, 0...count-1.
     * 
     * @return A String containing the value of the attribute, or null if the
     *         attribute cannot be found.
     */
    public String getAttributeValue(int index);

    /**
     * Returns the value of the specified attribute as a string representation.
     * The lookup is performed using the attribute name.
     * 
     * @param namespace The namespace of the attribute to get the value from.
     * @param name The name of the attribute to get the value from.
     * 
     * @return A String containing the value of the attribute, or null if the
     *         attribute cannot be found.
     */
    public String getAttributeValue(String namespace, String name);

查看AttributeSet的源碼 你會發現它是一個接口 是個什么接口呢?

熟悉XML解析的人知道 在XML解析中是有AttributeSet這個東西的,XML解析根據節點取出節點相對應的數據。

Android中,我們寫的布局文件就是XML形式的,所以這就是每次我們自定義View的時候,構造方法有AttributeSet的原因。

SDK給出的解釋如下:

A collection of attributes, as found associated with a tag in an XML document. Often you will not want to use this interface directly, instead passing it to Resources.Theme.obtainStyledAttributes() which will take care of parsing the attributes for you. In particular, the Resources API will convert resource references (attribute values such as "@string/my_label" in the original XML) to the desired type for you; if you use AttributeSet directly then you will need to manually check for resource references (with getAttributeResourceValue(int, int)) and do the resource lookup yourself if needed. Direct use of AttributeSet also prevents the application of themes and styles when retrieving attribute values.

This interface provides an efficient mechanism for retrieving data from compiled XML files, which can be retrieved for a particular XmlPullParser through Xml.asAttributeSet(). Normally this will return an implementation of the interface that works on top of a generic XmlPullParser, however it is more useful in conjunction with compiled XML resources:

那我們自定義View的時候,AttributeSet又是怎么用的呢?

一般情況下,我們是在values下面新建一個attrs文件夾

<declare-styleable name="MyView">  
    <attr name="textColor" format="color"/>  
    <attr name="textSize" format="dimension"/>  
</declare-styleable>

布局文件如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:myapp="http://schemas.android.com/apk/res/com.example.androidtest"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:background="@android:color/black"
    android:layout_height="match_parent">
    
    <com.example.androidtest.MyView
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"    
        myapp:textColor="#FFFFFFFF"    
        myapp:textSize="62dp"  
        ></com.example.androidtest.MyView>

</LinearLayout>

自定義View樣例代碼:

public class MyView extends TextView {

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
        
        TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyView);
        int textColor = array.getColor(R.styleable.MyView_textColor, 0XFF00FF00);
        float textSize = array.getDimension(R.styleable.MyView_textSize, 36);
        setTextColor(textColor);
        setTextSize(textSize);
        setText("22222222222");
        
        array.recycle();
    }

    public MyView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

到此,關于“Android中AttributeSet的實例用法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德令哈市| 泽州县| 潞西市| 威远县| 江口县| 湄潭县| 金山区| 南川市| 手游| 垦利县| 四会市| 浦北县| 简阳市| 东乌| 额济纳旗| 定州市| 成安县| 营口市| 晋城| 南乐县| 疏勒县| 潢川县| 曲周县| 湘潭县| 斗六市| 灌云县| 贵阳市| 房产| 湘阴县| 灵台县| 睢宁县| 玉溪市| 深水埗区| 哈尔滨市| 武胜县| 江油市| 织金县| 丹巴县| 文昌市| 淄博市| 胶州市|