A. android開發中,怎麼修改默認的布局格式
在layout文件夾下面的main.xml,把他修改就行,具體的有很多,這也說的不全面,這只是main的主布局。反正在這個layout文件夾下面的都是布局文件。還有其它的就要分開放了,比如進度條的布局就要放在drawable文件夾中了,看你是要改什麼的布局了。
希望對你有所幫助,望採納。
B. android設計界面時控制項有多種排列方法,其中常用布局方式有
在android中我們常用的布局方式有這么幾種:LinearLayout (線性布局),RelativeLayout (相對布局),TableLayout (表格布局),AbsoluteLayout (絕對布局),FrameLayout (幀布局)。LinearLayout 和 RelativeLayout 應該又是其中用的較多的兩種。AbsoluteLayout 比較少用(我自己還沒用過),因為它是按屏幕的絕對位置來布局的如果屏幕大小發生改變的話控制項的位置也發生了改變。這個就相當於HTML中的絕對布局一樣,一般不推薦使用。LinearLayout 顧名思義就是一條條的將控制項布置下去,線性布局分為水平線性和垂直線性二者的屬性分別為
android:orientation="horizontal" android:orientation="vertical" 。xmlns:android="http://schemas.android.com/apk/res/android" 很多人對這個感到困惑,其實它就是一個命名空間。RelativeLayout 相對布局。裡面的每個控制項之間的關系都是相對的。如果不設置相對關系的話默認擺放在屏幕左上角。重要屬性如下:
android:layout_toRightOf="@id/city" :與id為city的控制項的右邊對齊。
android:layout_alignTop="@id/city" : 與id為city的控制項的頂部對齊。
給出示意圖如下所示:
android:layout_width="fill_parent" android:layout_height="wrap_content" 我一般在線性布局裡面套相對布局,這時候需要注意上面兩個屬性相對布局的寬度可以設置為填充父控制項,但是高度一般不要設置為填充父控制項因為這樣的話我想在相對布局外面在放控制項就沒有效果了因為屏幕已經被相對布局全部占據。
不管是用什麼布局,寬度與高度這兩個屬性一定要弄清楚剛開始的時候我經常會發現有些控制項沒顯示在界面上或者占據了整個屏幕,一檢查原來是這里設置錯了。還有不要忘記這兩個屬性在一般控制項中都是不可或缺的,忘記設置的話就會報錯。
C. android中常見的五種布局有什麼特點
1,FrameLayout,特點:所有的View都會放在左上角,並且後添加進去的View會覆蓋之前放進去的View。
2,LinearLayout,特點:在水平或者垂直方向上依次按照順序來排列子元素,控制項的排列順序遵循其在布局文件中被寫出的先後順序。
3,RelativeLayout,特點:以某一個子元素為參照物,其餘子元素均按照其相對位置來完成布局。
4,TableLayout,特點:每個TableLayout都是由一個或多個TableRow組成的,一個TableRow就代表TableLayout的一行。
5,AbsoluteLayout,表格布局類似Html裡面的Table。每一個TableLayout裡面有表格行TableRow,TableRow裡面可以具體定義每一個元素,設定他的對齊方式 android:gravity="" 。
(3)android布局樣式擴展閱讀:
開放性:
在優勢方面,Android平台首先就是其開放性,開發的平台允許任何移動終端廠商加入到Android聯盟中來。顯著的開放性可以使其擁有更多的開發者,隨著用戶和應用的日益豐富,一個嶄新的平台也將很快走向成熟。
開放性對於Android的發展而言,有利於積累人氣,這里的人氣包括消費者和廠商,而對於消費者來講,最大的受益正是豐富的軟體資源。開放的平台也會帶來更大競爭,如此一來,消費者將可以用更低的價位購得心儀的手機。
豐富的硬體:
這一點還是與Android平台的開放性相關,由於Android的開放性,眾多的廠商會推出千奇百怪,功能特色各具的多種產品。功能上的差異和特色,卻不會影響到數據同步、甚至軟體的兼容,如同從諾基亞Symbian風格手機一下改用蘋果iPhone,同時還可將Symbian中優秀的軟體帶到iPhone上使用、聯系人等資料更是可以方便地轉移。
D. android一個頁面可以有幾種布局方法嗎
Android界面五種常用布局方式
Android的界面由布局和組件協同完成,布局相當於整體框架,而組件則是框架裡面的內容。組件按布局方式一次排列,就組成了用戶所能看見的界面。Android的五大布局分別是LinearLayout(線性布局)、FrameLayout(單幀布局)、RelativeLayout(相對布局)、AbsoluteLayout(絕對布局)、TableLayout(表格布局)。
LinearLatout按照垂直或水平的順序依次排列子元素,每一個子元素都位於前一個元素之後。如果是垂直排列,那麼將是一個N行單列的結構,每行只會有一個元素,而不論這個元素的寬度是多少;如果是水平排列,那麼將是一個單行N列的結構。如果搭建兩行兩列的結構,通常是先垂直排列兩個元素,每個元素里再包含一個LinearLayout進行水平排列。
FrameLayout是五大布局中最簡單的一種布局,在這個布局中,整個界面被當成一塊備用的空白區域,所有的子元素都不能被指定放置的位置,它們統統放於這塊區域的左上角,並且後面的元素直接覆蓋在前面的子元素之上,將前面的子元素部分或全部遮擋。
AbsoluteLayout是絕對布局。在此布局中的子元素android:layout_x和android:layout_y屬性將生效,用於描述該子元素的坐標位置。屏幕上左上角為坐標原點(0,0),第一個0代表橫坐標,向右移動此值增大,第二個代表縱坐標,向下移動此值增大,在此布局中的子元素可以相互重疊。在四級開發中,通常不採用此布局方式,因為它的界面代碼過於剛性,以至於不能很好的適配各種終端。
RelativeLayout按照各子元素之間的位置關系完成布局。在此布局中的子元素里與位置相關的屬性將會生效。例如android:layout_below,android:layout_above等。子元素就通過這些屬性和個自的ID配合指定位置關系。注意在指定位置關系時,引用的ID必須在引用前被定義,否則將出現異常。RelativeLayout是Android五大布局中較為靈活的一種布局方式,比較適合一些復雜的界面布局。
TableRow(表格布局)是LinearLayout的子類,它的Android:Layout_width和Layout_height屬性恆為MATCH_PARENT和WRAP_CONTENT。所以它的子元素都是橫向排列,並且寬高一致。這樣的設計使得每個tablerow里的子元素都都相當於表格中的單元格一樣。在TableRow中,單元格可以為空,但是不能跨列。
E. Android中常用的五種布局
Android
布局是應用界面開發的重要一環,在Android中,共有五種布局方式分別是:
線性布局:LinerLayout
表格布局:TableLayout
相對布局:RelativeLayout
絕對布局:AbsoluteLayout
幀布局:FrameLayout
F. Android布局優化的幾種方式
1. include/merge
布局優化中常常用到include/merge標簽,include的含義類似C代碼中的include,意思是直接把指定布局片段包含進當前的布局文件。include適用於多個布局文件中存在相同的xml片段,比如說相同的標題欄、相同的廣告欄、相同的進度欄等等。
2. ViewStub
在一個頁面上根據不同條件展示不同的控制項,我們常常會設置控制項的可視屬性,比如調用指定控制項的setVisibility方法,若需展示則設置View.VISIBLE,若需隱藏則設置View.GONE。不過gone的控制項只是看不到罷了,實際UI渲染時還是會被載入。要想事先不載入,在條件符合時才載入,就得用到標簽ViewStub。
3. style樣式
樣式在res/values/styles.xml中定義,它適用於下面幾種情況:
1、布局文件中存在多個具有相同風格的控制項,比如說統一的文本框TextView,都是白底黑字、中號字體、居中顯示,這時我們便可在styles.xml定義一種文本樣式,然後在各文本框處聲明它的style屬性。好處一個是減少了布局文件的大小,另一個是方便以後統一修改風格。
2、某些控制項在代碼中聲明時需要手工指定style,例如自定義對話框需要在構造函數中指定樣式;另一個例子是彈窗PopupWindow在設置伸縮動畫方法setAnimationStyle時需要指定動畫樣式。
3、定義頁面的主題風格,然後應用到Activity頁面。代碼中設置主題可通過「setTheme(R.style.)」完成,布局中設置可在AndroidManifest.xml的activity節點下添加theme屬性,如「android:theme=」@style/「」。
4. Theme主題
主題是一種特殊的樣式,主題專用於頁面,而樣式一般運用於控制項。主題定義一般放在themes.xml,樣式定義一般放在styles.xml。
Android定義了一些系統主題,完整定義的參見sdk自帶的themes.xml,常用的幾種說明如下:
Theme.NoTitleBar : 不顯示標題欄,即隱藏ActionBar
Theme.Light : 白色背景
Theme.Holo : 淺灰背景
Theme.Black : 黑色背景
Theme.Wallpaper : 壁紙
Theme.Translucent : 透明背景
Theme.Dialog : 對話框
Theme.Panel : 平板
Theme.InputMethod : 輸入法
Theme.SearchBar : 搜索框
G. 安卓開發中怎麼在布局中添加顯得樣式
使用TableLayout表格布局
表格布局模型以行列的形式管理子控制項,每一行為一個TableRow的對象,當然也可以是一個View的對象。TableRow可以添加子控制項,每添加一個為一列。
TableLayout屬性:
android:collapseColumns:將TableLayout裡面指定的列隱藏,若有多列需要隱藏,請用逗號將需要隱藏的列序號隔開。
android:stretchColumns:設置指定的列為可伸展的列,以填滿剩下的多餘空白空間,若有多列需要設置為可伸展,請用逗號將需要伸展的列序號隔開。
android:shrinkColumns:設置指定的列為可收縮的列。當可收縮的列太寬(內容過多)不會被擠出屏幕。當需要設置多列為可收縮時,將列序號用逗號隔開。
列元素(Button)屬性:(奇怪的是button 裡面沒有android:layout_column 和android:layout_span兩個屬性,寫進去無反應,還不知道為什麼)
android:layout_colum:設置該控制項在TableRow中指定的列。
android:layout_span:設置該控制項所跨越的列數。
H. android常用的五種布局
常用五種布局方式,分別是:FrameLayout(框架布局),LinearLayout (線性布局),AbsoluteLayout(絕對布局),RelativeLayout(相對布局),TableLayout(表格布局)。
LinearLayout裡面又可分為垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )
I. android的ui布局有哪些
布局(Layout)的概念是針對Activity的,Activity就是布滿整 個Android設備的窗口或者懸浮於其他窗口上的交互界面。在一個應用程序中通常由多個Activity構成,每個需要顯示的Activity都需要在AndroidManifest.xml文件之中聲明。
通常情況下,開發人員可以使用兩種方式來創建UI組件,一種方式是使用XML方式來配置UI組件的相關屬性,然後裝載這些UI組件,這也是最常用的方式。但是有些特殊情況下,需要動態生成UI組件,則需要使用第二種方式,完全使用java代碼來創建UI組件。
XML布局文件是Android系統中定義的Layout的常用方式,所有布局文件必須包含在res/layout目錄中,且必須符合Java的命名 規范。當在res/layout目錄下新增了布局文件之後,R.java文件會自動收錄該布局資源,Java代碼可通過setContentView方法 在Activity中顯示該Layout。
setContentView(R.layout.<資源名稱>);
在布局文件中可以指定UI組件的android:id屬性,該屬性的屬性值代表該組件的唯一標識。通過Activity.findViewById()訪問,並且findViewById()必須在setContentView載入xml文件之後使用,否則會拋出異常。
findViewById(R.id.)
Android應用的絕大部分UI組件都放在android.widget包及其子包、android.view包及其子包中,Android應用的 所有UI組件都繼承了View類。View類還有一個重要的子類:ViewGroup,ViewGroup類是所有布局管理器的父類。
ViewGroup容器控制其子組件的分布依賴於ViewGroup.LayoutParams、ViewGroup.MarginLayoutParams兩個內部類。
ViewGroup.LayoutParams提供兩個XML屬性設定組件的大小。
android:layout_height:指定該子組件的基本高度;
android:layout_width:指定該子組件的基本寬度。
這兩個屬性有三個基本值,這兩個屬性有三個特定的值:
fill_parent:指定組件的高度、寬度與父容器組件的一樣。
match_parent:與fill_parent一樣,Android2.2開始推薦使用。
warp_content:內容包裹。
ViewGroup.MarginLayoutParams用於控制子組件周圍的頁邊距。
android:layout_marginBottom(下邊距);
android:layout_marginLeft(左邊距);
android:layout_marginRight(右邊距):
layout_marginTop(上邊距)
對於View的尺寸,android提供了三種單位供選擇使用:
px:像素。
dp:dpi,表示屏幕實際的像素。
sp:與scale無關的像素,與dp類似。
尺寸單位選擇的技巧:如果設置長度、高度等屬性時可以使用dp或sp,但是如果設置字體,需要使用px。如果使用dp或sp,系統會根據屏幕密度的變化進行轉換。
為了適應各種界面風格,Android提供了五種布局規范,利用這五種布局,基本上可以在設備上隨心所欲的擺放任何UI組件,這五種布局分別是:
FrameLayout(幀布局)。
LinearLayout(線性布局)
RelativeLayout(相對布局)。
TableLayout(表格布局)。
AbsoluteLayout(絕對布局)。
線性布局(LinearLayout)
LinearLayout是最常用的布局方式,在XML文件中使用標記。它會將容器里的UI組件一個一個挨著排列起來。但是LinearLayout不會換行,當UI組件超出屏幕之後,則不會被顯示出來。LinearLayout有兩個重要的XML屬性:androidgravity(對齊方 式);android:orientation(排列方式)。
android:orientation(排列方式),設定了LinearLayout中包含的UI組件的排列方式,有兩個選項vertical(豎向)、horizontal(橫向,默認值)
android:gravity(對齊方式),設定LinearLayout中包含UI組件的對齊方式,其選項很多,常用上(top)、下(bottom)、左(left)、右(right)。
J. android系統中有哪三種常用的ui設計方式
Android 資源類型
1.字元串資源
>>1.普通字元串
>>2.字元串數組
復制代碼
<resources>
<string-array name="planets_array">
<item>aaa</item>
<item>bbb</item>
</string-array>
</resources>
復制代碼
獲取方式:getResources().getStringArray(R.array.planets_array)
>>3.復數字元串資源
某些自然語言中,不同的數字在使用方法上會有所不同,比如one book,two books。當數量大於1時,會使用不同的名詞或其它復數形式;
復制代碼
<resources>
<plurals name="numberOfp">
<item quantity="one">one person</item>
<item quantity="other">more persons</item>
</plurals>
</resources>
復制代碼
quantity屬性的值除了one和other外,還可以是zero,two,few,many;
引用復數字元串:
// 引用數字為1的復數字元串
getResources().getQuantityString(R.pluarlas.numberOfp,1);
// 引用數字為其它值的復數字元串
getResources().getQuantityString(R.pluarlas.numberOfp,10,10);
>>4.佔位符格式化字元串
常用的格式化字元串三種方法:
>>1.在字元串中使用引號
字元串中的值雖然可以隨意指定,但是當遇到特殊符號時(雙引號,單引號)就需要採取特殊的方法來處理這些符號。
如果是單引號(')可以使用轉義符(\)或用雙引號(")將整個字元串括起來,如果是雙引號,可以在雙引號前使用轉義符(\)。
<resources>
<string name="str1">"This'll work"</string> This'll work
<string name="str2">This\'ll work</string> This'll work
<string name="str3">\"apple\"</string> "apple"
</resources>
>>2.用佔位符格式化字元串
使用String.format(String,Object...)方法可以格式化帶佔位符的字元串,只需要在字元串中插入佔位符,就可以使用String.format方法格式化字元串資源,format方法要求的佔位符用%1,%,...,%n,其實第n個佔位符與format方法的n+1個參數值對應;
<resources>
<!-- $s表示該佔位符被字元串替換,$d表示該佔位符被整數替換 -->
<string name="str1">hello,%1$s!You have %2$d new message</string>
</resources>
String str1 =String.format(getResources().getString(R.string.str1), "ly", 17);
>>3.使用HTML標簽格式化字元串資源
字元串資源支持一些HTML標簽,因此可以直接在字元串資源中使用這些HTML標簽格式化字元串
字元串資源支持如下的HTML標簽
<b>粗體字
<i>斜體定
<u>帶下劃線的字
有時需要同時使用HTML標簽和佔位符格式化字元串,如果使用String.format方法格式化字元串,會忽略字元串中的所有HTML標簽。為了使format方法可以格式化帶
HTML標簽的確字元,需要使用Html.formHTML方法處理字元串;
<resources>
<string name="hello_world">Welcome to <b>android</b></string>
<string name="str2">Hello,%1$s! You have <b> %2d new messages </b></string> <!--同時包含佔位符和html標簽的字元串-->
</resources>
由於需要使用Html.formHTML方法處理字元串,因此HTML標簽中的 "<" 需要使用 "<" 表示 ">" 並不需要處理
獲取字元串:
String text = String.format(getResources().getString(R.string.str2), "ly", 10);
CharSequence styledText = Html.fromHtml(text);
// 如果format的某個參數包含HTML的特殊字元,如"<","&",可以使用如下方式讀取字元串的值;
String escapedUsername = TextUtils.htmlEncode("");
String text1 = String.format(getResources().getString(R.string.str2), "ly", 20);
2.Layout資源
1、如果根節點是View,除了<requestFocus>標簽外,不能添加任何子標簽,<requestFocus>可能被添加到布局文件的任何View中,表示該標簽對應的控制項在顯示時處於焦點狀態,整個布局文件只能有一個<requestFocus>標簽
2、根節點是ViewGroup,常用的布局都是ViewGroup的子類
3、重用布局文件
如果想重用某個布局文件,可以使用<include>標簽
<include layout="@layout/xx_layout" />
如果想讓一個布局文件被另一個布局文件引用(使用<include>標簽),可以使用<merge>作為被引用布局文件的根節點,由於<merge>並不會生成任何標簽(在大量引用布局文件時不至於生成大量無用的標簽),但是xml文件必須要有一個根節點,因此<merge>所起的作用就是作為xml文件的根節點,以使xml文件在編譯時不至於出錯,可以把<merge>當成<FrameLayout>使用;
3.圖像資源
在圖像資源中可以存儲圖像文件,還可以使用xml格式的圖像資源來控制項圖像的狀態和行為;
>>1.普通圖像資源
Drawable da = getResources().getDrawable(R.drawable.xxx);
>>2.xml圖像資源
xml圖像資源其實就是在drawable目錄中指定的xml文件,此種方式可以額外指定圖像的某些屬性,如圖像拉動、排列方式;
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_launcher"
android:tileMode="repeat" >
</bitmap>
>>3.Nine-Patch圖像資源
Nine-Patch圖像資源文件必須以9.png作為文件擴展名,如abc.9.png
該圖像資源的主要作用是:防止圖像的某一部分被拉伸;確定將圖像作為背景圖的控制項中內容顯示的位置;
Android SDK本身提供了一個Draw 9-patch的工具,啟動<sdk目錄>\tools\draw9patch.bat命令啟動該工具;
可以通過此工具在png圖的四周繪制1個像素粗的直線,上邊緣和左邊緣的直線分別表示圖像在水平和垂直方向可位值的范圍。如果水平或垂直方向的某個區域不需要拉伸,則可不繪制相應的直線;右邊緣和下邊緣的直線分別表示圖像所在控制項中內容的顯示範圍,內容只在右邊緣和下邊緣繪制直線的區域顯示,表示內容顯示範圍和拉伸范圍的兩給直線有一個重要區別就是表示內容顯示範圍的直線中間不能斷開,而表示拉伸范圍的直線中間可以斷開;
Nine-Patch圖像資源與普通圖像資源引用方法相同,在引用時只寫文件名,活力.9.png;
>>4.XML Nine-Patch圖像資源
Nine-Patch圖像資源也有與其對應的xml圖像資源,使用<nine-patch>標簽來引用Nine-Patch格式的圖像,有一個設置抖動的android:dither屬性;
>>5.圖層資源
圖層資源類似於<FrameLayout>不同的是<FrameLayout>標簽中可以包含任意的控制項,而圖層資源每一層都只有是圖像,定義圖層資源必須使用<layer-list>作為資源文件的根節點,<layer-list>標簽中包含多個<item>標簽,每一個標簽表示一個圖像,最後一個<item>標簽顯示在最頂層;
默認情況下,圖像會盡量充滿顯示圖像的范圍,圖像可能會有拉伸,為了避免圖像拉伸,可以在<item>標簽中使用<bitmap>標簽引用圖像;
復制代碼
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:bottom="10dip" 底端偏移的像素
android:left="10dip" 左側偏移的像素
android:right="10dip" ...
android:top="10dip"> ...
<bitmap
android:gravity="center"
android:src="@drawable/hell" />
</item>
</layer-list>
復制代碼
某些情況下,可以使用圖層來代替<FrameLayout>
>>6.圖像狀態資源,處理控制項不同狀態下的顯示狀態
復制代碼
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bm" android:state_focused="true"></item>
<item android:drawable="@drawable/bm" android:state_pressed="true"></item>
<item android:drawable="@drawable/bm"></item>
</selector>
// android:state_focused/pressed設置為true表示當前item的drawable屬性為獲取焦點和按下時的drawable樣式
復制代碼
>>7.圖像級別(Level)資源
圖像資源狀態只能指定幾種有限的狀態,可以通過圖像級別指定更多的狀態;圖像級別是一個整數的區間,可以通過ImageView.setImageLevel或Drawable.setLevel方法切換不同狀態的圖像;圖像級別資源是xml文件,必須以<level-list>為根節點,每一個item表示一個級別區間,下面是一個xml文件;通過ImageView.setImageLevel(level),根據level所在的區間設定顯示的圖像資源,如果level不在任一區間內則清空ImageView當前圖像;
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="2" android:minLevel="0" android:drawable="@drawable/hell" />
<item android:maxLevel="4" android:minLevel="3" android:drawable="@drawable/hell" />
</level-list>
>>8.淡入淡出(Cross-fade)資源
也是切換兩個圖像(不支持多於兩個圖像的切換),並且使這兩個圖像以淡入淡出效果進行切換,如電燈在開關時逐漸變亮或逐漸變暗;
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/hell"/>
<item android:drawable="@drawable/hell"/>
</transition>
TransitionDrawable da = ...;
// 從第一張圖片切換到第二張圖片,時間效果為1秒
da.startTransition(1000);
// 從第二張圖片切換到第一張圖片,時間效果為1秒
da.reverseTransition(1000);
>>9.嵌入(insert)圖像資源
使用場景:要顯示的圖像要求要小於裝載圖像的View(圖小於View區域),也是通過xml資源定義,只有一個節點inset。
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/hell"
android:insetLeft="10dip" > <!--圖像距離左邊的距離,延伸-->上/下/右的距離-->
</inset>
>>10.剪切(Clip)圖像資源,使用剪切圖像資源可以只顯示圖像的一部分,如可以通過此來製作進度條;
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:clipOrientation="horizontal" // 指定截取的方向
android:drawable="@drawable/hell" // 指定要截取的圖像
android:gravity="left" > // 指定截取的方式,在此為從左側開始截取
</clip>
ClipDrawable cd = ...;
cd.setLevel(1000);
上面ClipDrawable.setLevel(level)設置截取的圖像寬度,ClipDrawable預設了最大值10000(表示不進行截取),最小值為0(表示不顯示);
>>11. 比例(Scale)圖像資源
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/hell"
android:scaleGravity="center" // 設置圖像顯示的位置
android:scaleHeight="70%" // 設置圖像顯示的高度
android:scaleWidth="80%" > // 設置圖像顯示的寬度
</scale>
>>12.形狀資源
復制代碼
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" > shape可以指定就矩形,oval(橢圓),line(直線),ring(圓)
<corners> 定義圓角
</corners>
<gradient
android:angle="45"
android:startColor="#000000"
android:endColor="#FFFFFF" > 定義顏色漸變,從左下角到或上角
</gradient>
<padding> 定義控制項內容到邊框的距離
</padding>
<stroke> 定義邊線
</stroke>
<solid> 定義填充
</solid>
<size> 定義大小
</size>
</shape>
復制代碼
13.菜單資源
菜單不僅可以在onCreateContextMenu或onCreateOptionsMenu方法中通過代碼創建,還可以在res/menu目錄中建立相應的菜單資源文件,並在上面兩個方法中載入菜單資源;
菜單資源文件必須以<menu>標簽作為根節點,每一個菜單項用一個<item>表示,如果要定義子菜單,可以在<item>標簽中包含<menu>標簽;如果想將多個菜單項劃為一組,可以使用<group>包含多個<item>標簽;
復制代碼
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
復制代碼
查看MenuInflater.inflate(int,Menu)
復制代碼
/**
* Inflate a menu hierarchy from the specified XML resource.
*
* @param menuRes Resource ID for an XML layout resource to load (e.g., <code>R.menu.main_activity</code>)
* @param menu The Menu to inflate into. The items and submenus will be added to this Menu.
*/
public void inflate(int menuRes, Menu menu) {
XmlResourceParser parser = null;
try {
parser = mContext.getResources().getLayout(menuRes);
AttributeSet attrs = Xml.asAttributeSet(parser);
parseMenu(parser, attrs, menu);
} catch ...finally {
if (parser != null) parser.close();
}
}
復制代碼
14.樣式與主題(style/theme)
>>1.樣式style
android中樣式和css中樣式作用是一樣的,都是用於為界面元素定義顯示風格,它是一個包含一個或者多個控制項屬性的集合。
定義樣式需要在res/values/styles.xml中進行定義,如下是一個樣式的定義:
<style name="textViewStyle">
<item name="android:textSize">22sp</item>
<item name="android:textColor">#FF0000</item>
</style>
<style name="textViewStyle1" parent="textViewStyle"></style><!-- 此樣式繼承自textViewStyle -->
<style name="textViewStyle.Livingstone"><!-- 樣式繼承的另一種寫法,但不可用此寫法繼承Android自帶的定義樣式? -->
<item name="android:textColor">#00FF00</item>
</style>
所有定義的樣式都會在R文件中自動生成一個資源ID,加一個點表示樣式繼承會生成上圖所示的資源id;
樣式的引用:
<TextView
style="@style/textViewStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="hello" />
>>2.主題Theme
主題應用於整個應用或者activity,樣式應用於具體的控制項上。主題的應用與樣式定義一樣,不同的是主題還可以設置窗口的顯示風格;主題的引用需要在清單文件中進行引用,如引用到整個應用之上就需要在Application節點中進行配置引用,而引用到單個Activity只需要在此Activity中進行配置引用;
復制代碼
<style name="Livingstonetheme"><!--此定義是一個無Title的主題-->
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">?android:windowNoTitle</item>
<!-- 問號表示引用此主題中android:windowNoTitle屬性的值 -->
<item name="android:textSize">18sp</item>
</style>
復制代碼
android系統定義了一些屬性,如android:theme="@android:style/Theme.Dialog",該主題可以讓Activity看起來像一個對話框,更多主題可以在文檔reference->android->R.style中查看。當主題裡面的樣式屬性值與樣式裡面的屬性值發生沖突的時候會顯示樣式裡面的值;
15.其它資源
在資源文件中還可以包括尺寸(dimen)、整數(integer)、布爾(bool) 、整形數組資源(integer-array)、資源數組(array)、顏色(color)
TypedArray ta = getResources().obtainTypedArray(int id); // 獲取數組資源,包括integer-array、array
Final總結:
除了res/values目錄中的資源名,其它目錄的資源都會以文件名在R類的相應子類中生成變數;而res/values中的資源會以name屬性值為變數名在R類的相應子類中生成變數;