android自定义布局

    技术2022-05-20  62

    做Android布局是件很享受的事,这得益于他良好的xml方式。使用xml可以快速有效的为软件定义界面。可是有时候我们总感觉官方定义的一些基本组件不够用,自定义组件就不可避免了。那么如何才能做到像官方提供的那些组件一样用xml来定义他的属性呢?现在我们就来讨论一下他的用法。

    一、在res/values文件下定义一个attrs.xml文件,代码如下:

    <?xml version="1.0" encoding="utf-8"?> <resources>     <declare-styleable name="ToolBar">         <attr name="buttonNum" format="integer"/>         <attr name="itemBackground" format="reference|color"/>     </declare-styleable> </resources>

    二、在布局xml中如下使用该属性:

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:toolbar="http://schemas.android.com/apk/res/cn.zzm.toolbar"     android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     >     <cn.zzm.toolbar.ToolBar android:id="@+id/gridview_toolbar"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:layout_alignParentBottom="true"         android:background="@drawable/control_bar"         android:gravity="center"         toolbar:buttonNum="5"         toolbar:itemBackground="@drawable/control_bar_item_bg"/> </RelativeLayout>

    三、在自定义组件中,可以如下获得xml中定义的值:

    TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.ToolBar); buttonNum = a.getInt(R.styleable.ToolBar_buttonNum, 5); itemBg = a.getResourceId(R.styleable.ToolBar_itemBackground, -1);

    a.recycle();


    最新回复(0)