Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> Android 用style簡化layout布局文件

Android 用style簡化layout布局文件

編輯:高級開發

我有一個頁面上面有若干個button樣式都是相同的 在屏幕居中 25號白色字

  之前的代碼如下:

  XML代碼 收藏代碼

  1. < ?XML version="1.0" encoding="utf-8"?>

  2. < RelativeLayout

  3. XMLns:android="http://schemas.android.com/apk/res/android"

  4. android:layout_width="fill_parent"

  5. android:layout_height="fill_parent"

  6. android:background="@color/background">

  7. < ImageVIEw

  8. android:id="@+id/home_iv1"

  9. android:layout_width="wrap_content"

  10. android:layout_height="wrap_content"

  11. android:paddingTop="15dip"

  12. android:layout_centerHorizontal="true"

  13. android:src="@drawable/home"

  14. />

  15. < Button

  16. android:id="@+id/home_bt1"

  17. android:layout_width="wrap_content"

  18. android:layout_height="wrap_content"

  19. android:layout_centerHorizontal="true"

  20. android:layout_below="@id/home_iv1"

  21. android:layout_marginTop="15dip"

  22. android:background="@drawable/selector"

  23. android:gravity="center"

  24. android:text="@string/home_b1"

  25. />

  26. ........

  27. < Button

  28. android:id="@+id/home_bt5"

  29. android:layout_width="wrap_content"

  30. android:layout_height="wrap_content"

  31. android:layout_centerHorizontal="true"

  32. android:layout_below="@id/home_bt4"

  33. android:layout_marginTop="15dip"

  34. android:background="@drawable/selector"

  35. android:gravity="center"

  36. android:text="@string/home_b5"

  37. />

  38. < /RelativeLayout>

  < ?XML version="1.0" encoding="utf-8"?>

  < RelativeLayout

  XMLns:android="http://schemas.android.com/apk/res/android"

  接上頁

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:background="@color/background">

  < ImageVIEw

  android:id="@+id/home_iv1"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:paddingTop="15dip"

  android:layout_centerHorizontal="true"

  android:src="@drawable/home"

  />

  < Button

  android:id="@+id/home_bt1"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:layout_centerHorizontal="true"

  android:layout_below="@id/home_iv1"

  android:layout_marginTop="15dip"

  android:background="@drawable/selector"

  android:gravity="center"

  android:text="@string/home_b1"

  />

  ........

  < Button

  android:id="@+id/home_bt5"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:layout_centerHorizontal="true"

  android:layout_below="@id/home_bt4"

  android:layout_marginTop="15dip"

  android:background="@drawable/selector"

  android:gravity="center"

  android:text="@string/home_b5"

  />

  < /RelativeLayout>

  我們可以看到這五個按鈕除了ID和text、還有below(因為用的相對布局,如果用線性布局這塊也可以相同)其他的都一樣,那我們能不能簡化一下這些重復的代碼呢?可以,用style。

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

  在values下新建style.XML

  XML代碼 收藏代碼

  1. < ?XML version="1.0" encoding="utf-8"?>

  2. < resources>

  3. < style name="homebtn" >

  4. < item name="android:layout_width">wrap_content< /item>

  5. < item name="android:layout_height">wrap_content< /item>

  接上頁

  6. < item name="android:textSize">20sp< /item>

  7. < item name="android:textColor">#FFFFffff< /item>

  8. < item name="android:gravity">center< /item>

  9. < item name="android:layout_marginTop">15dip< /item>

  10. < item name="android:layout_centerHorizontal">true< /item>

  11. < item name="android:background">@drawable/selector< /item>

  12. < /style>

  13. < /resources>

  < ?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>

  < /resources>

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

  XML代碼 收藏代碼

  1. < ?XML version="1.0" encoding="utf-8"?>

  2. < RelativeLayout

  3. XMLns:android="http://schemas.android.com/apk/res/android"

  4. android:layout_width="fill_parent"

  5. android:layout_height="fill_parent"

  6. android:background="@color/background">

  7. < ImageVIEw

  8. android:id="@+id/home_iv1"

  9. android:layout_width="wrap_content"

  10. android:layout_height="wrap_content"

  11. android:paddingTop="15dip"

  接上頁

  12. android:layout_centerHorizontal="true"

  13. android:src="@drawable/home"

  14. />

  15. < Button

  16. android:id="@+id/home_bt1"

  17. style="@style/homebtn"

  18. android:layout_below="@id/home_iv1"

  19. android:text="@string/home_b1"

  20. />

  21. .......

  22. < Button

  23. android:id="@+id/home_bt5"

  24. style="@style/homebtn"

  25. android:layout_below="@id/home_bt4"

  26. android:text="@string/home_b5"

  27. />

  28. < /RelativeLayout>

  < ?XML version="1.0" encoding="utf-8"?>

  < RelativeLayout

  XMLns:android="http://schemas.android.com/apk/res/android"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:background="@color/background">

  < ImageVIEw

  android:id="@+id/home_iv1"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:paddingTop="15dip"

  android:layout_centerHorizontal="true"

  android:src="@drawable/home"

  />

  < Button

  android:id="@+id/home_bt1"

  style="@style/homebtn"

  android:layout_below="@id/home_iv1"

  android:text="@string/home_b1"

  />

  .......

  < Button

  android:id="@+id/home_bt5"

  style="@style/homebtn"

  android:layout_below="@id/home_bt4"

  android:text="@string/home_b5"

  />

  < /RelativeLayout>

  其實在style中可以定義多個樣式給不同的組件使用,現在我們把ImageVIEw也用樣式定義一下吧:

  XML代碼 收藏代碼

  1. < ?XML version="1.0" encoding="utf-8"?>

  2. < resources>

  3. < style name="homebtn" >

  接上頁

  4. < item name="android:layout_width">wrap_content< /item>

  5. < item name="android:layout_height">wrap_content< /item>

  6. < item name="android:textSize">20sp< /item>

  7. < item name="android:textColor">#FFFFffff< /item>

  8. < item name="android:gravity">center< /item>

  9. < item name="android:layout_marginTop">15dip< /item>

  10. < item name="android:layout_centerHorizontal">true< /item>

  11. < item name="android:background">@drawable/selector< /item>

  12. < /style>

  13. < style name="homeiv">

  14. < item name="android:layout_width">wrap_content< /item>

  15. < item name="android:layout_height">wrap_content< /item>

  16. < item name="android:layout_marginTop">15dip< /item>

  17. < item name="android:layout_centerHorizontal">true< /item>

  18. < /style>

  19. < /resources>

  < ?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>

  好了介紹到這裡也就完了。等。。等一下這裡好像出現了和剛才的布局文件一樣的問題,重復的代碼!(我是不是有重復癖,看見重復就想消滅。。)

  這裡的重復能不能消滅呢,這也是可以的。在style下還有一個個有用的屬性:

  parent ? 可選,一些在自定義的style中沒有指定的屬性會繼承parent style中的值。parent可以是android預定義的resource,也可以是自己定義的style。

  現在看看使用parent之後的樣子:

  XML代碼 收藏代碼

  1. < ?XML version="1.0" encoding="utf-8"?>

  2. < resources>

  3. < style name="homeiv">

  4. < item name="android:layout_width">wrap_content< /item>

  5. < item name="android:layout_height">wrap_content< /item>

  6. < item name="android:layout_marginTop">15dip< /item>

  7. < item name="android:layout_centerHorizontal">true< /item>

  8. < item name="android:background">@drawable/home< /item>

  9. < /style>

  10. < style name="homebtn" parent="@style/homeiv">

  11. < item name="android:textSize">20sp< /item>

  12. < item name="android:textColor">#FFFFffff< /item>

  13. < item name="android:gravity">center< /item>

  14. < item name="android:background">@drawable/selector< /item>

  15. < /style>

  16. < /resources>

  < ?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>

  當然style最主要的作用不是用來精簡代碼,而是讓開發者自定義更個性的效果,不過這個附加的作用也不錯。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved