日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android常见XML属性解析

發(fā)布時間:2025/3/21 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android常见XML属性解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

常見XML屬性解析

屬性描述
android:idandroid:id的設(shè)置,通常有三種方式,詳見下文
android:layout_width控件寬度
android:layout_height控件高度
android:padding內(nèi)邊距
android:margin外邊距
android:layout_weight權(quán)重
android:layout_gravity相對重力
android:gravity本身位置
android:visbility可視性
android:background背景
android:onClick點擊屬性
android:foucusable焦點
android:foucsableInTouchMode焦點

android:id

android:id的設(shè)置,通常有三種方式,分別是以下這三種:
android:id=”@+id/xxx”
android:id=”@android:id/tabhost”
android:id=”@id/xxx”

(1)android:id=”@+id/xxx”
表示在R.java文件里面新增一個id為xxx的控件索引,最常用的一種聲明控件id的方式。
代碼獲取方式:findViewById(R.id.xxx);

(2) android:id=”@android:id/tabhost”
表示引用的是系統(tǒng)已有的ID,在對應(yīng)的sdk目錄下的ids.xml里面。一般外部不去調(diào)用,是組件內(nèi)部調(diào)用的時候使用。

(3)android:id=”@id/xxx”
表示引用一個已經(jīng)存在的ID,在R.java里面的,比如我們自己建了一個ids.xml,里面聲明了一組id,其中一個是xxx,那么你就可以這樣引用了。
代碼獲取方式同(1)

android:layout_width和android:layout_height

所有控件必須指定:android:layout_width和android:layout_height屬性。這兩個屬性有以下三種形式:
a. 具體的大小,如:100px;
b. wrap_content(包含內(nèi)容),表示控件應(yīng)該保持原來大小;
c. fill_parent(填充父元素),表示在處理完所有其他控件之后,當前控件應(yīng)該填滿包含它的容器的所有空用空間。

android:layout_weight

權(quán)重

android:layout_weight屬性:表示為相應(yīng)控件分配的空間比例。其默認值為0,
如果一個控件設(shè)置為1,另一個為2,那么第二個控件占用的空間是第一個的兩倍。
另一種方式是以百分比為單位,使用百分比有下面三個步驟:
a. 將布局中控件的layout_width設(shè)置為0;
b. 將控件設(shè)置成想要的百分比;
c. 保證所有這些控件的百分比和為100.

weight是線性布局的一個獨特的屬性,我們可以使用這個屬性來按照比例對界面進行分配,完成一些特殊的需求。
但是,我們對于這個屬性的計算應(yīng)該如何理解呢?
首先看下面的例子,我們在布局中這樣設(shè)置我們的界面

我們在布局里面設(shè)置為線性布局,橫向排列,然后放置兩個寬度為0dp的按鈕,分別設(shè)置weight為1和2,在效果圖中,我們可以看到兩個按鈕按照1:2的寬度比例正常排列了,這也是我們經(jīng)常使用到的場景,這是時候很好理解,Button1的寬度就是1/(1+2) = 1/3,Button2的寬度則是2/(1+2) = 2/3,我們可以很清楚的明白這種情景下的占比如何計算。
但是假如我們的寬度不是0dp(wrap_content和0dp的效果相同),則是match_parent呢?
下面是設(shè)置為match_parent的效果

我們可以看到,在這種情況下,占比和上面正好相反,這是怎么回事呢?說到這里,我們就不得不提一下weight的計算方法了。
android:layout_weight的真實含義是:如果View設(shè)置了該屬性并且有效,那么該 View的寬度等于原有寬度(android:layout_width)加上剩余空間的占比。
從這個角度我們來解釋一下上面的現(xiàn)象。在上面的代碼中,我們設(shè)置每個Button的寬度都是match_parent,假設(shè)屏幕寬度為L,那么每個Button的寬度也應(yīng)該都為L,剩余寬度就等于L-(L+L)= -L。
Button1的weight=1,剩余寬度占比為1/(1+2)= 1/3,所以最終寬度為L+1/3*(-L)=2/3L,Button2的計算類似,最終寬度為L+2/3(-L)=1/3L。
這是在水平方向上的,那么在垂直方向上也是這樣嗎?
下面是測試代碼和效果
如果是垂直方向,那么我們應(yīng)該改變的是layout_height的屬性,下面是0dp的顯示效果

下面是match_parent的顯示效果,結(jié)論和水平是完全一樣的

雖然說我們演示了match_parent的顯示效果,并說明了原因,但是在真正用的時候,我們都是設(shè)置某一個屬性為0dp,然后按照權(quán)重計算所占百分比。

android:padding

內(nèi)邊距
通過android:padding屬性可以為部件的四邊設(shè)置內(nèi)邊距。
屬性: android:padding 、android:paddingLeft(左邊距)、android:paddinRight(右邊距)、android:paddinTop(上邊距)、android:paddinBottom(下邊距),單位是px,如:5px。

android:margin 和android:layout_margin

Margin 為外邊框

padding與margin區(qū)別

padding是站在父view的角度描述問題,它規(guī)定它里面的內(nèi)容必須與這個父view邊界的距離。margin則是站在自己的角度描述問題,規(guī)定自己和其他(上下左右)的view之間的距離,如果同一級只有一個view,那么它的效果基本上就和padding一樣了。

android:layout_gravity&android:gravity

從名字上可以看到,android:gravity是對元素本身說的,元素本身的文本顯示在什么地方靠著換個屬性設(shè)置,不過不設(shè)置默認是在左側(cè)的。

android:layout_gravity是相對與它的父元素說的,說明元素顯示在父元素的什么位置。

比如說button: android:layout_gravity 表示按鈕在界面上的位置。 android:gravity表示button上的字在button上的位置。

可選值

這兩個屬性可選的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical。

而且這些屬性是可以多選的,用“|”分開。

默認這個的值是:Gravity.LEFT

horizontal 都是操作的水平方向,即橫向, vertical 都是炒作的垂直方向,即縱向。

對于LinearLayout何時生效的問題

參看:
也談layout_gravity和gravity

對于 LinearLayout

當 android:orientation=”vertical” 時, 只有水平方向的設(shè)置才起作用,垂直方向的設(shè)置不起作用。即:left,right,center_horizontal 是生效的。

當 android:orientation=”horizontal” 時, 只有垂直方向的設(shè)置才起作用,水平方向的設(shè)置不起作用。即:top,bottom,center_vertical 是生效的。

android:visbility

VISIBLE:設(shè)置控件可見

INVISIBLE:設(shè)置控件不可見

GONE:設(shè)置控件隱藏

而INVISIBLE和GONE的主要區(qū)別是:當控件visibility屬性為INVISIBLE時,界面保留了view控件所占有的空間;而控件屬性為GONE時,界面則不保留view控件所占有的空間。

可見(visible)

XML文件:android:visibility=”visible”

Java代碼:view.setVisibility(View.VISIBLE);

不可見(invisible)

XML文件:android:visibility=”invisible”

Java代碼:view.setVisibility(View.INVISIBLE);

隱藏(GONE)

XML文件:android:visibility=”gone”

Java代碼:view.setVisibility(View.GONE);

android:onClick

Represents a push-button widget. Push-buttons can be pressed, or clicked, by the user to perform an action.

A typical use of a push-button in an activity would be the following:

public class MyActivity extends Activity {protected void onCreate(Bundle icicle) {super.onCreate(icicle);setContentView(R.layout.content_layout_id);final Button button = (Button) findViewById(R.id.button_id);button.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// Perform action on click}});}}

However, instead of applying an OnClickListener to the button in your activity, you can assign a method to your button in the XML layout, using the android:onClick attribute. For example:

<Button android:layout_height="wrap_content"android:layout_width="wrap_content"android:text="@string/self_destruct"android:onClick="selfDestruct" />

Now, when a user clicks the button, the Android system calls the activity’s selfDestruct(View) method. In order for this to work, the method must be public and accept a View as its only parameter. For example:

public void selfDestruct(View view) {// Kabloey}

The View passed into the method is a reference to the widget that was clicked.

android:foucusable和android:foucsableInTouchMode

官方touch-mode

當用戶直接使用keys或trackball與UI進行交互的時候, 必須先使目標控件獲取焦點(比如按鈕),這樣用戶才會注意到是什么控件接收輸入. 然而如果設(shè)備支持觸摸手勢的話, 用戶可能使用觸摸屏與UI進行交互, 這個時候就沒有必要將目標控件高亮顯示了(即,獲取焦點). 因此就產(chǎn)生了這樣一種交互模式叫”touch mode .”

對于一個擁有觸摸屏功能的設(shè)備而言, 一旦用戶用手點擊屏幕, 設(shè)備立刻進入touch mode . 這時候被點擊的控件只有isFocusableInTouchMode()方法返回true的時候才會 focusable , 比如EditText控件. 其他可以觸摸的控件, 比如按鈕, 當被點擊的時候不會獲取焦點; 它們只是簡單地執(zhí)行onClick事件而已.

任何時候只要用戶點擊key或滾動trackball, 設(shè)備就會退出touch mode ,并且找一個view將焦點置于其上. 此時用戶可以不使用觸摸手勢了.

touch mode 在整個系統(tǒng)運行期間都是有效的(在任何activities中). 如果想要查詢當前處于何種狀態(tài), 你可以調(diào)用View#isInTouchMode()來看看當前是否處于touch mode .

獲取焦點,我們只需要設(shè)置
android:foucusableInTouchMode=“true”就可以了。
所有的獲取焦點,都要有一個前提,那就是該控件必須設(shè)置android:clickable=”true”,如果都點擊不了,設(shè)置焦點應(yīng)該沒什么意義了吧。

android:background

1.指定顏色

android:background="@color/mycolor"

These colors can be defined in the res/values/colors.xml file (see here how to do this).

You can also define a color directly at the attribute (android:background=”#ffff0000”), but that’s usually not good. By defining the colors in the XML file you can give it a descriptive name (improves code readability) and you can reuse it somewhere else.

2.指定圖片

android:background="@drawable/backgroud" 《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Android常见XML属性解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。