Android中Style和Theme資源

山有木xi發表於2020-06-03

Style和Theme主要是用於對Android應用進行美化設計,最佳化互動頁面,充分利用各種樣式和主題資源,可以開發出各種風格的Android應用

  • Style

當我們需要面對大量的元件指定相似格式,例如:字型,顏色,背景顏色等等,要是我們每次都選擇為View元件重複指定這些屬性,無疑會造成工作量的劇增,而且不理由程式碼維護性和可視性。

類似於Word和PPT的管理格式:一個樣式等於一組格式的集合,如果設定某段文字使用某個樣式,那麼該樣式的所有格式會整體被應用於該文字。一個樣式相對於多個格式的集合,其他UI元件透過style屬性來指定樣式,這就相當於把該樣式包含的所有格式同時應用於該UI元件

定義樣式資源:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
 <style name="style1">
  <item name="android:textSize">11sp</item>
  <item name="android:textColor">#32d</item>
 </style>
 <style name="style2" parent="@style/style1">
  <item name="android:background">#116</item>
  <item name="android:padding">26dp</item>
  <item name="android:textColor">#005</item>
 </style>
</resources>

然後在佈局頁面中使用:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
 android:orientation="vertical"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <EditText
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="@string/style1"
  style="@style/style1"/>
 <EditText
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="@string/style2"
  style="@style/style2"/>
</LinearLayout>
  • Theme

和樣式資源很相似,主題資源的XML也放在和樣式資源一起的目錄下

但是主題資源和樣式資源還真就有這區別:主題不能作用於單個View元件,主體應該對整個應用中的所有Activity起作用,或者對指定的Acitivity起作用。主題定義的格式應該是改變視窗外觀的格式,例如視窗標題,視窗邊框這些等

定義主題資源:

 <style name="CrazyTheme">
  <item name="android:windowNoTitle">true</item>
  <item name="android:windowFullscreen">true</item>
  <item name="android:windowFrame">@drawable/window_border</item>
  <item name="android:windowBackground">@drawable/star</item>
 </style>

在Android程式碼中寫入:

public vod onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setTheme(R.style.CrazyTheme);
setContentView(R.layout.main);
}

最後在AndroidManifest.xml中新增theme即可

<application android:theme="@style/CrazyitTheme">
....


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2695844/,如需轉載,請註明出處,否則將追究法律責任。

相關文章