android studio樣式檔案彙總:shape、Theme|styles 、selector
1:shape
shape用於設定形狀,有6個子標籤,各屬性如下:
res/drawable/styles.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 圓角 -->
<corners
android:radius="9dp"
android:topLeftRadius="2dp"
android:topRightRadius="2dp"
android:bottomLeftRadius="2dp"
android:bottomRightRadius="2dp"/><!-- 設定圓角半徑 -->
<!-- 漸變 -->
<gradient
android:startColor="@android:color/white"
android:centerColor="@android:color/black"
android:endColor="@android:color/black"
android:useLevel="true"
android:angle="45"
android:type="radial"
android:centerX="0"
android:centerY="0"
android:gradientRadius="90"/>
<!-- 間隔 -->
<padding
android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp"/><!-- 各方向的間隔 -->
<!-- 大小 -->
<size
android:width="50dp"
android:height="50dp"/><!-- 寬度和高度 -->
<!-- 填充 -->
<solid
android:color="@android:color/white"/><!-- 填充的顏色 -->
<!-- 描邊 -->
<stroke
android:width="2dp"
android:color="@android:color/black"
android:dashWidth="1dp"
android:dashGap="2dp"/>
</shape>
填充:設定填充的顏色
間隔:設定四個方向上的間隔
大小:設定大小
圓角:同時設定五個屬性,則Radius屬性無效
android:Radius="20dp" 設定四個角的半徑
android:topLeftRadius="20dp" 設定左上角的半徑
android:topRightRadius="20dp" 設定右上角的半徑
android:bottomLeftRadius="20dp" 設定右下角的半徑
android:bottomRightRadius="20dp" 設定左下角的半徑
描邊:dashWidth和dashGap屬性,只要其中一個設定為0dp,則邊框為實現邊框
android:width="20dp" 設定邊邊的寬度
android:color="@android:color/black" 設定邊邊的顏色
android:dashWidth="2dp" 設定虛線的寬度
android:dashGap="20dp" 設定虛線的間隔寬度
漸變:當設定填充顏色後,無漸變效果。angle的值必須是45的倍數(包括0),僅在type="linear"有效,不然會報錯。android:useLevel 這個屬性不知道有什麼用。
angle對應值的起點如圖:
2:selector
目錄結構為:res/drawable/**.xml
在ListView中新增如下屬性程式碼
- android:listSelector="@drawable/mylist_view"
在ListView的item介面中新增如下屬性程式碼
- android:background="@drawable/mylist_view"
利用JAVA程式碼直接編寫
- Drawable drawable = getResources().getDrawable(R.drawable.mylist_view);
- listView.setSelector(drawable);
為了防止列表拉黑的情況發生,需要在ListView中新增以下的屬性程式碼
android:cacheColorHint="@android:color/transparent"
屬性介紹:
android:state_selected選中
android:state_focused獲得焦點
android:state_pressed點選
android:state_enabled設定是否響應事件,指所有事件
程式碼參考:
- <?xml version="1.0" encoding="utf-8" ?>
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- 預設時的背景圖片-->
- <item android:drawable="@drawable/pic1" />
- <!-- 沒有焦點時的背景圖片 -->
- <item android:state_window_focused="false"
- android:drawable="@drawable/pic1" />
- <!-- 非觸控模式下獲得焦點並單擊時的背景圖片 -->
- <item android:state_focused="true" android:state_pressed="true" android:drawable= "@drawable/pic2" />
- <!-- 觸控模式下單擊時的背景圖片-->
- <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/pic3" />
- <!--選中時的圖片背景-->
- <item android:state_selected="true" android:drawable="@drawable/pic4" />
- <!--獲得焦點時的圖片背景-->
- <item android:state_focused="true" android:drawable="@drawable/pic5" />
- </selector>
3:style|Theme
res/values/styles.xml
style 作用於view,theme作用於application或者Activity。
Style:是一個包含一種或者多種格式化屬性的集合,我們可以將其用為一個單位用在佈局XML單個元素當中。比如,我們可以定義一種風格來定義文字的字號大小和顏色,然後將其用在View元素的一個特定的例項。
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <!-- 定義style -->
- <style name="myTextStyle" mce_bogus="1"> <item name="android:textSize">20px</item>
- <item name="android:textColor">#EC9237</item>
- </style>
- <style name="myTextStyle2" mce_bogus="1"> <item name="android:textSize">14px</item>
- <item name="android:textColor">#FF7F7C</item>
- </style>
- <!-- 定義theme -->
- <style name="myTheme" mce_bogus="1"> <item name="android:windowNoTitle">true</item>
- <item name="android:textSize">14px</item>
- <item name="android:textColor">#FFFF7F7C</item>
- </style>
- </resources>
引用方式:
- <TextView
- style="@style/myTextStyle2"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical|center_horizontal"
- android:text="www.google.cn"
- android:autoLink="all"
- />
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setTheme(R.style.myTheme);
- setContentView(R.layout.main);
- }