談談- declare-styleable屬性

在Android開發中,往往要用到自定義的控件來實現我們的需求或效果。在使用自定義?
控件時,難免要用到自定義屬性,那怎么使用自定義屬性呢?

一、簡單使用:

?

1.在文件res/values/下新建attrs.xml屬性文件,中定義我們所需要的屬性:
<resources><!-- resource是跟標簽,可以在里面定義若干個declare-styleable -->
<declare-styleable name="custom_view"><!-- name定義了變量的名稱 --><attr name="custom_color" format="color"></attr> <!-- 定義對應的屬性,name定義了屬性的名稱 --><attr name="custom_size" format="dimension"></attr> <!--每一個發生要定義format指定其類型,類型包括 reference   表示引用,參考某一資源IDstring   表示字符串color   表示顏色值dimension   表示尺寸值boolean   表示布爾值integer   表示整型值float   表示浮點值fraction   表示百分數enum   表示枚舉值flag   表示位運算-->
</declare-styleable>
?

2.在布局中使用:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:ldm="http://schemas.android.com/apk/res/com.ldm.learn"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#f6f6f6"android:orientation="vertical"android:padding="10dp" ><com.ldm.learn.CustomTextViewandroid:layout_width="100dp"android:layout_height="100dp"android:text="自定義TextView"ldm:custom_color="#333333"ldm:custom_size="35sp" /></LinearLayout>

2.在代碼中引用:
public class CustomTextView extends TextView {
 private int textSize;//自定義文件大小

? ? ?private int textColor;//自定義文字顏色

? ? //自定義屬性,會調用帶兩個參數的構造方法
? ? public CustomTextView(Context context, AttributeSet attrs) {
? ? ? ? ? ?super(context, attrs);
? ? ? ? ? ?TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.custom_view);//TypedArray屬性對象
? ? ? ? ? ? textSize = ta.getDimensionPixelSize(R.styleable.custom_view_custom_size, 20);//獲取屬性對象中對應的屬性值
? ? ? ? ? ?textColor = ta.getColor(R.styleable.custom_view_custom_color, 0x0000ff);
? ? ? ? ? ?setColorAndSize(textColor, textSize);//設置屬性
? ? ? ? ? ?ta.recycle();
}

? ?public CustomTextView(Context context){

? ? ? ? ? ?super(context);

}

? ?private void setColorAndSize(int textColor, int textSize){

? ? ? ? ? ?setTextColor(textColor);

? ? ? ? ? setTextSize(textSize);

}

?

}

?

?

?

二、declare-styleable屬性詳解:

?

1. reference:參考某一資源ID。

??? (1)屬性定義:

??????????? <declare-styleable name = "名稱">

?????????????????? <attr name = "background" format = "reference" />

??????????? </declare-styleable>

??? (2)屬性使用:

???????????? <ImageView

???????????????????? android:layout_width = "42dip"
???????????????????? android:layout_height = "42dip"
???????????????????? android:background = "@drawable/圖片ID"

???????????????????? />

2. color:顏色值。

??? (1)屬性定義:

??????????? <declare-styleable name = "名稱">

?????????????????? <attr name = "textColor" format = "color" />

??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <TextView

???????????????????? android:layout_width = "42dip"
???????????????????? android:layout_height = "42dip"
???????????????????? android:textColor = "#00FF00"

???????????????????? />

3. boolean:布爾值。

??? (1)屬性定義:

??????????? <declare-styleable name = "名稱">

?????????????????? <attr name = "focusable" format = "boolean" />

??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <Button

??????????????????? android:layout_width = "42dip"
??????????????????? android:layout_height = "42dip"

??????????????????? android:focusable = "true"

??????????????????? />

4. dimension:尺寸值。

??? (1)屬性定義:

??????????? <declare-styleable name = "名稱">

?????????????????? <attr name = "layout_width" format = "dimension" />

??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <Button

??????????????????? android:layout_width = "42dip"
??????????????????? android:layout_height = "42dip"

??????????????????? />

5. float:浮點值。

??? (1)屬性定義:

??????????? <declare-styleable name = "AlphaAnimation">

?????????????????? <attr name = "fromAlpha" format = "float" />
?????????????????? <attr name = "toAlpha" format = "float" />

??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <alpha
?????????????????? android:fromAlpha = "1.0"
?????????????????? android:toAlpha = "0.7"

?????????????????? />

6. integer:整型值。

??? (1)屬性定義:

??????????? <declare-styleable name = "AnimatedRotateDrawable">

?????????????????? <attr name = "visible" />
?????????????????? <attr name = "frameDuration" format="integer" />
?????????????????? <attr name = "framesCount" format="integer" />
?????????????????? <attr name = "pivotX" />
?????????????????? <attr name = "pivotY" />
?????????????????? <attr name = "drawable" />

??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <animated-rotate

?????????????????? xmlns:android = "http://schemas.android.com/apk/res/android"?
?????????????????? android:drawable = "@drawable/圖片ID"?
?????????????????? android:pivotX = "50%"?
?????????????????? android:pivotY = "50%"?
?????????????????? android:framesCount = "12"?
?????????????????? android:frameDuration = "100"

?????????????????? />

7. string:字符串。

??? (1)屬性定義:

??????????? <declare-styleable name = "MapView">
?????????????????? <attr name = "apiKey" format = "string" />
??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <com.google.android.maps.MapView
??????????????????? android:layout_width = "fill_parent"
??????????????????? android:layout_height = "fill_parent"
??????????????????? android:apiKey = "0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g"

??????????????????? />

8. fraction:百分數。

??? (1)屬性定義:

??????????? <declare-styleable name="RotateDrawable">
?????????????????? <attr name = "visible" />
?????????????????? <attr name = "fromDegrees" format = "float" />
?????????????????? <attr name = "toDegrees" format = "float" />
?????????????????? <attr name = "pivotX" format = "fraction" />
?????????????????? <attr name = "pivotY" format = "fraction" />
?????????????????? <attr name = "drawable" />
??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <rotate

?????????????????? xmlns:android = "http://schemas.android.com/apk/res/android"
  ???????????? android:interpolator = "@anim/動畫ID"

?????????????????? android:fromDegrees = "0"
  ???????????? android:toDegrees = "360"

?????????????????? android:pivotX = "200%"

?????????????????? android:pivotY = "300%"
  ???????????? android:duration = "5000"

?????????????????? android:repeatMode = "restart"

?????????????????? android:repeatCount = "infinite"

?????????????????? />

9. enum:枚舉值。

??? (1)屬性定義:

??????????? <declare-styleable name="名稱">
?????????????????? <attr name="orientation">
????????????????????????? <enum name="horizontal" value="0" />
????????????????????????? <enum name="vertical" value="1" />
?????????????????? </attr>????????? ?

??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <LinearLayout

??????????????????? xmlns:android = "http://schemas.android.com/apk/res/android"
??????????????????? android:orientation = "vertical"
??????????????????? android:layout_width = "fill_parent"
??????????????????? android:layout_height = "fill_parent"
??????????????????? >
??????????? </LinearLayout>

10. flag:位或運算。

???? (1)屬性定義:

???????????? <declare-styleable name="名稱">
??????????????????? <attr name="windowSoftInputMode">
??????????????????????????? <flag name = "stateUnspecified" value = "0" />
??????????????????????????? <flag name = "stateUnchanged" value = "1" />
??????????????????????????? <flag name = "stateHidden" value = "2" />
??????????????????????????? <flag name = "stateAlwaysHidden" value = "3" />
??????????????????????????? <flag name = "stateVisible" value = "4" />
??????????????????????????? <flag name = "stateAlwaysVisible" value = "5" />
??????????????????????????? <flag name = "adjustUnspecified" value = "0x00" />
??????????????????????????? <flag name = "adjustResize" value = "0x10" />
??????????????????????????? <flag name = "adjustPan" value = "0x20" />
??????????????????????????? <flag name = "adjustNothing" value = "0x30" />
???????????????????? </attr>?????? ?

???????????? </declare-styleable>

???? (2)屬性使用:

??????????? <activity

?????????????????? android:name = ".StyleAndThemeActivity"
?????????????????? android:label = "@string/app_name"
?????????????????? android:windowSoftInputMode = "stateUnspecified | stateUnchanged | stateHidden">
?????????????????? <intent-filter>
????????????????????????? <action android:name = "android.intent.action.MAIN" />
????????????????????????? <category android:name = "android.intent.category.LAUNCHER" />
?????????????????? </intent-filter>
???????????? </activity>

特別要注意:

???? 屬性定義時可以指定多種類型值。

??? (1)屬性定義:

??????????? <declare-styleable name = "名稱">

?????????????????? <attr name = "background" format = "reference|color" />

??????????? </declare-styleable>

??? (2)屬性使用:

???????????? <ImageView

???????????????????? android:layout_width = "42dip"
???????????????????? android:layout_height = "42dip"
???????????????????? android:background = "@drawable/圖片ID|#00FF00"

???????????????????? />

轉載:http://blog.csdn.net/langxinlen/article/details/50343175

轉載于:https://www.cnblogs.com/zly1022/p/7526198.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280394.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280394.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280394.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker:自定義ubuntu/制作鏡像引用/ubuntu換源更新

一、需求 1. 制作一個圖像辨識的api&#xff0c;用到相同設置的ubuntu鏡像&#xff0c;但是每次制作都要更新ubuntu和下載tesseract浪費半個到一個小時下載&#xff0c;所以制作一個自定義ubuntu幾次鏡像大大提高開發效率。 2. 制作ubuntu過程時&#xff0c;可以調試tesserac…

jQuery 屬性和CSS

HTML代碼&#xff1a; <div id"div1">div1<p>1</p><p>2</p><p>3</p> </div> <div id"div2">div2</div> <div id"div3">div3</div>attr()設置節點的屬性 $("#div1…

facebook人臉照片_為什么您的Facebook照片看起來如此糟糕(以及您可以如何做)...

facebook人臉照片Facebook is a popular platform for sharing photos, even though it’s not a very good one. They prioritize fast loading images over high quality ones. You can’t stop it from happening, but you can minimize the quality loss. Facebook是一個受…

用C#自己動手寫個操作系統,爽!

自從C#的AOT編譯機制發布以來&#xff0c;有趣的項目越來越多&#xff0c;今天給大家推薦一個開源項目&#xff0c;用C#開發的64位操作系統。項目簡介這是一個使用.NET Native AOT技術編譯的C# 64位操作系統&#xff0c;系統的基礎功能基本都已經支持&#xff1a;網卡、多處理、…

JavaFX 學習筆記——窗口與控件

前言 如今比較流行的桌面gui框架有WPF、WinForm、Qt、javafx等。其中WPF和WinForm目前還只能在運行Winsows上。Qt(widget)是一個很強大的跨平臺C框架(不只是UI)&#xff0c;但用C寫界面實在有點蛋疼&#xff0c;且編譯出來的體積很大。 JavaFX是基于JAVA的開源桌面框架&#xf…

Linux 用戶名、主機添加背景色

文章參考&#xff1a;PS1應用之——修改linux終端命令行各字體顏色 Linux 用戶名、主機添加背景色&#xff0c;用于生產環境&#xff0c;這樣可以減少人為的誤操作。 1 [rootzhang ~]# tail /etc/bashrc 2 ……………… 3 export PS1"\[\e[37;40m\][\[\e[37;41m\]\u\[\e[3…

python 調用文件上傳圖片簡單例子

使用方法&#xff1a; python.exe .\test.py "fileD:\img\mark_1080.png" "matchWordListRUN" "urlhttp://192.168.0.37:8081/templateMatch" test.py import requests import sysif __name__ "__main__":print(參數個數為:, len(s…

解決網站在負載均衡環境下SESSION丟失的問題

在WEB場中,動態網頁往往會因為幾臺主機做了負載而產生SESSION丟失的問題&#xff0c;網上也有很多的介紹&#xff0c;我這里只將我經歷的過程給大家分享一下&#xff1a; 系統要運行在負載平衡的 Web 場環境中&#xff0c;而系統配置文件web.config中的Session狀態卻設置為InPr…

如何從手機或PC將游戲下載到PlayStation 4

PlayStation 4 games can be huge, and take hours to download. Thankfully, you can start downloading games even when you’re away from home. All you need is Sony’s official smartphone app, or a web browser on any PC. PlayStation 4游戲可能非常龐大&#xff0c…

CML更新 | 新增百度小程序、支付寶小程序

祝所有工程師小伙伴開工大吉&#xff0c;Beatles 團隊已經開始忙碌起來了。 幾個事情要向諸位匯報一下&#xff1a; 一、新增百度小程序、支付寶小程序 發布alpha版本支持百度小程序、支付寶小程序&#xff0c;已有項目可以無縫直接運行在新增平臺&#xff0c;歡迎安裝試用&…

C#中4種深拷貝方法介紹

概述為什么要用到深拷貝呢&#xff1f;比如我們建了某個類Person&#xff0c;并且實例化出一個對象&#xff0c;然后&#xff0c;突然需要把這個對象復制一遍&#xff0c;并且復制出來的對象要跟之前的一模一樣&#xff0c;來看下我們一般會怎么做。1、利用反射實現public stat…

kaggle入門項目:Titanic存亡預測(三)數據可視化與統計分析

---恢復內容開始--- 原kaggle比賽地址&#xff1a;https://www.kaggle.com/c/titanic 原kernel地址&#xff1a;A Data Science Framework: To Achieve 99% Accuracy Step 4: Perform Exploratory Analysis with Statistics 使用描述性與圖表分析數據&#xff0c;重點在于數據可…

docker遇到問題歸納

/bin/sh^M: bad interpreter #在win下編輯的時候&#xff0c;換行結尾是\n\r &#xff0c; 而在linux下 是\n&#xff0c;所以才會有 多出來的\r #可以用以下方式解決先在控制臺cd到報錯的目錄#編輯報錯的那個文件 vi xxx.sh#利用如下命令查看文件格式 :set ff 或 :set filef…

faster rcnn訓練過程講解

http://blog.csdn.net/u014696921/article/details/60321425

firefox 擴展_如何檢查您的擴展程序是否將停止與Firefox 57一起使用

firefox 擴展With Firefox 57, scheduled for release in November 14, 2017, Mozilla will end support for legacy extensions, and only support newer WebExtensions. Here’s how to check if your extensions will stop working—and how to keep using them after Novem…

《構建之法》 讀書筆記

《構建之法》 讀書筆記 婁雨禛 PB16060356 第一部分 關于結對編程的體悟與實踐 在結對編程這一部分我曾講過很多的注意點&#xff0c;比如代碼變量命名風格、縮進風格、注釋風格&#xff0c;前后語句次序風格&#xff0c;等等。然而這里還有一些新的東西。代碼風格這個老掉牙的…

邊緣服務網格 osm-edge

本文篇幅稍長&#xff0c;閱讀本文將了解以下內容&#xff1a;?什么是 osm-edge 及其產生背景?邊緣計算與中心云計算的差異&#xff0c;以及帶來的挑戰?osm-edge 的設計及采用的技術?5 分鐘快速體驗邊緣服務網格關于 osm-edgeosm-edge 是針對邊緣計算環境設計的服務網格&am…

powershell獲取exe文件返回值

一、目的 1.powershell能簡單寫一些小腳本&#xff0c;不需要exe開發這么笨重。 2.在windows實現某個特定功能&#xff0c;做成一個exe能方便查看管理。 二、實現 1.C# code 運行結束加入返回值 Environment.ExitCode 1; //自定義數字 2.powershell 調用并獲取 需要增加…

自定義ViewGroup實現仿微信圖片選擇器

先求一個windows版本的gif制作工具&#xff01;&#xff01;&#xff01; 這個代碼只是做了簡單的選擇功能&#xff0c;圖片的壓縮與展示沒做。可以自己在接口的方法中去實現。 寫這個自定義view的初衷是為了學習LayoutParams&#xff0c;參考博客&#xff1a;http://www.jians…

[PHP] 多表外連接性能測試及優化

原文&#xff1a;https://blog.csdn.net/tang_huan_11/article/details/41925639 版權聲明&#xff1a;本文為博主原創文章&#xff0c;轉載請附上博文鏈接&#xff01;轉載于:https://www.cnblogs.com/0616--ataozhijia/p/10364188.html