android中用style簡化布局文件

ArdMarquez 8年前發布 | 4K 次閱讀 Android開發 移動開發

 

   android開發相對于ios有一個很大的優勢,那就是可以通過xml來寫布局,而且布局可以很靈活,能適應多種屏幕。但是時間久點你會發現xml中有太多的重復代碼了,我真是恨死了在每次增加一個控件的時候都要不情愿的寫上

android:layout_width="wrap_content"
android:layout_height="wrap_content"

這兩行, 如果我們有5個button控件都是16dip白色字體、背景為#0033FF、內容居中,那么我們必須在每個button上都加上這樣幾個屬性:

android:textColor="#FFFFFF"
android:textSize="16dip"
android:background="#0033FF"
android:gravity="center"

   是不是很煩,是不是很sb!

   其實我們可以用將這些重復的屬性的定義寫在style文件中,如果某個控件需要16dip白色字體、背景為#0033FF的樣式,只需將包含這些屬性定義的style引用進來就可以了。

   先看看用style怎么設置這些重復的屬性:

在values下新建style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="white_blue_button" >
  <item name="android:layout_width">wrap_content</item>
  <item name="android:layout_height">wrap_content</item>
  <item name="android:textSize">16dip</item>
  <item name="android:textColor">#FFFFFF</item>
  <item name="android:gravity">center</item>
  <item name="android:background">#0033FF</item>
</style>
</resources>

   再回到我們的布局文件在按鈕中設置style="@style/white_blue_button"就可以了。

<Button 
    style="@style/white_blue_button"
    android:text="白色字體的藍色按鈕"
 />

   上面的style.xml文件中我們只定義了一組名為white_blue_button的樣式給白色字體的藍色按鈕使用,其實在style中還可以定義多個樣式給不同的組件使用。下面的style文件中我們定義了一組樣式給button,還定義了一組樣式給ImageView:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="homebtn" >
  <item name="android:layout_width">wrap_content</item>
  <item name="android:layout_height">wrap_content</item>
  <item name="android:textSize">20sp</item>
  <item name="android:textColor">#FFFFffff</item>
  <item name="android:gravity">center</item>
  <item name="android:layout_marginTop">15dip</item>
  <item name="android:layout_centerHorizontal">true</item>
  <item name="android:background">@drawable/selector</item>
</style>
<style name="homeiv">
  <item name="android:layout_width">wrap_content</item>
  <item name="android:layout_height">wrap_content</item>
  <item name="android:layout_marginTop">15dip</item>
  <item name="android:layout_centerHorizontal">true</item>
</style>
</resources>

   這就是多個樣式的例子,只需為不同的樣式加上name就可以了。

   上面的例子中我們發現"homebtn"完全繼承了"homeiv"中的屬性,因此還可以進一步簡化:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="homeiv">
  <item name="android:layout_width">wrap_content</item>
  <item name="android:layout_height">wrap_content</item>
  <item name="android:layout_marginTop">15dip</item>
  <item name="android:layout_centerHorizontal">true</item>
  <item name="android:background">@drawable/home</item>
</style>
<style name="homebtn" parent="@style/homeiv">
  <item name="android:textSize">20sp</item>
  <item name="android:textColor">#FFFFffff</item>
  <item name="android:gravity">center</item>
  <item name="android:background">@drawable/selector</item>
</style>
</resources>

在homebtn中使用parent="@style/homeiv"來繼承"homeiv"

 

   當然style最主要的作用不是用來精簡代碼,而是讓開發者自定義更個性的效果,不過這個附加的作用也不錯。拿button來說,一般我們會定義好幾種風格的button,比如文章開頭展示的那幾種,最規范的辦法是將這些風格的button在style中先定義好,然后應用到界面中去。

 

 

 本文由用戶 ArdMarquez 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!