androidxml屬性
『壹』 Android開發中,xml資源文件中的id屬性,為什麼有的是@+id/....有的是@android:id/....;而且為什麼有+號
Android中組件需要用一個int類型的值來表示,這個值就是組件的id。
如果在@後面使用「+」,表示當修改完某個布局文件並保存後,系統會自動在R.java
文件中生成相應的int類型變數。例如,@+id/button1會在R.java文件中生成int button1 = value,其中value是一個十六進制的數。如果button1在R.java中已經存在同名的變數,就不再生成新的變數,而該組件會使用這個已存在的變數的值。
組件的id屬性是一個資源id就可以,那麼可以設置任何已經存在的資源id值。
@android:id/....這種方式就是設置一個已經存在的資源id。實際上,這個android就是系統的R類(在R.java文件中)所在的package。
『貳』 android 自定義view 怎麼獲取xml屬性
你說的是自定義view ,也就是你自己寫了個自定義的UI控制項,在xml中你只要將該控制項寫出來即可(如Button,TexView當作控制項來寫),例如:<view(你自定義的view的類名)/>,接下來你就懂了,在裡面聲明你要的屬性
『叄』 如何通過android官方api查看xml文件屬性的相關說明
frameworks\base\core\res\res\values\attrs.xml這個可以看
另外就是xml的屬性一般都有對應的java類,到這個java 類api 裡面可以查看到屬性
『肆』 and android:解析xml,一個節點標簽中,有多個屬性,怎樣解析
定義好對象關系的類。
解析以Course為例子
publicstaticList<Course>getCourseList(InputStreamstream){
List<Course>list=newArrayList<Course>();
//得到DocumentBuilderFactory對象,由該對象可以得到DocumentBuilder對象
DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
try{
//得到DocumentBuilder對象
DocumentBuilderbuilder=factory.newDocumentBuilder();
//得到代表整個xml的Document對象
Documentdocument=builder.parse(stream);
//得到"根節點"
Elementroot=document.getDocumentElement();
//獲取根節點的所有items的節點
NodeListitems=root.getElementsByTagName("item");
//遍歷所有節點
for(inti=0;i<items.getLength();i++){
Coursecourse=newCourse();
Elementitem=(Element)items.item(i);
course.setName(item.getAttribute("name"));
//再枚舉子節點
list.add(course);
}
}catch(ParserConfigurationExceptione){
e.printStackTrace();
}catch(SAXExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
returnlist;
}
『伍』 如何查找一個Android控制項具有哪些XML屬性
通過設置公共style的方式對同一個屬性進行統一設置
1、res/values文件夾下新建一個xml文件
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--定義一個叫et1的style-->
<style name="et1" parent="@android:style/Widget.EditText">
<!--設置控制項的背景色-->
<item name="android:background">#1A4EA4</item>
</style>
</resources>
2、組件中使用
1
2
<EditText android:layout_width="fill_parent" android:id="@+id/et2"
android:text="自定義樣式一" android:layout_height="wrap_content" style="@style/et1"></EditText> <!--設置style為et1,需要設置同樣屬性的其他組件可以都設置成同一個style-->
『陸』 android中xml中有些控制項的屬性裡面有 "app:.." ,此處的app:是什麼意思和一般的android:有什麼區別
區別是:這兩個是聲明的不同的命名空間,android的是系統的,app是自定義的。
Android自定義控制項的屬性,在xml中使用自己自定義的attr的時候,其中有一步就是要自定義一個xml的命名空間後然後再給自定義屬性賦值,現在發現不知道什麼時候開始Android把這個改了,現在發現可以統一用
xmlns:app="http://schemas.android.com/apk/res-auto"
而不是原來的:
xmlns:app="http://schemas.android.com/apk/App的Package名"
還有人提到在作為lib被使用的時候,也應該用res-auto
所以說區別就是如果你http://schemas.android.com/apk/後面寫的是res/包名,那就是相關包名下的自定義屬性,而res-auto就是所有的自定義包名。
『柒』 在android中,xml文件中的屬性從哪裡來的
可以去下載Framework層源碼 進入\frameworks\base\core\res\res\values裡面有attrs文件這些就是定義xml屬性的來源
『捌』 Android 中 怎麼動態修改布局xml文件中的根屬性值 比如如下圖的兩個屬性值 fitsSystemWindows 改為 false
給這個RelativeLayout設置一個id,比如 android:id="@+id/rl"
然後在class文件中獲取此控制項,再設置屬性即可
RelativeLayoutrelativeLayout=(RelativeLayout)findViewById(R.id.rl);
relativeLayout.setFitsSystemWindows(false);
『玖』 android中如何在xml文件中增加屬性
好的設置方式往往是數據驅動的,通過數據控制代碼的運行,便於代碼的維護和修改。在android中增中自定義的xml屬性, 可以把數據存儲在xml文件中,然後在代碼中取出這些屬性的值。分為以下幾步:
1. 在attrs.xml文件中定義屬性的類型,即字元串還是數值如下:
2.在xml 文件中指定譔屬性的值。如下:
android:key="tiltSensitivity"
android:defaultValue="50"
android:title="@string/preference_tilt_sensitivity"
android:summary="@string/preference_tilt_sensitivity_summary"
replica:maxText="@string/preference_tilt_max"
replica:minText="@string/preference_tilt_min"
android:persistent="true"
android:dependency="enableTiltControls"/>
3.在代碼中讀取值,方法如下:
public SliderPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.SliderPreference, defStyle, 0);
mMinText = a.getString(R.styleable.SliderPreference_minText);