当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

Android 用style简化layout布局文件

发表于: 2013-08-23   作者:cloklo   来源:转载   浏览次数:
摘要: 我有一个页面上面有若干个button样式都是相同的 在屏幕居中 25号白色字   之前的代码如下:   Xml代码 收藏代码   1. < ?xml version="1.0" encoding="utf-8"?>   2. < RelativeLayout   3. xmlns:Android="http://sche

我有一个页面上面有若干个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代码 收藏代码

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

  < ?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代码 收藏代码

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

  < ?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代码 收藏代码

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

  < ?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代码 收藏代码

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

  < ?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最主要的作用不是用来精简代码,而是让开发者自定义更个性的效果,不过这个附加的作用也不错。

Android 用style简化layout布局文件

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
布局Layout管理   布局即是指Activity中组件的呈现方式,即组件大小、间距和对齐方式等。   And
对于LinearLayout的layout_weight属性,很多人都很了解,今天我把我的一本android书又从第一页开始翻,
对于LinearLayout的layout_weight属性,很多人都很了解,今天我把我的一本android书又从第一页开始翻,
错误信息:只截取了一部分 java.lang.NullPointerException at android.graphics.Canvas_Delegate.r
layout_weight 该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布局中。其值越小,则
Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建 筑里的砖瓦。
加载火炬之光layouts文件主要步骤如下: 1.分别将火炬之光的scheme,imageset,looknfeel,font等资源
解析顺序 布局xml文件一般位于app/design/{area}/{package}/{theme}/layout/目录下。Layout文件一般
解析顺序 布局xml文件一般位于app/design/{area}/{package}/{theme}/layout/目录下。Layout文件一般
解析顺序 布局xml文件一般位于app/design/{area}/{package}/{theme}/layout/目录下。Layout文件一般
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号