您的位置:首页 > 移动开发 > Android开发

android 实现自定义组件

2014-03-15 22:54 302 查看
android开发中,对于复用率较高的多个控件,采用组件的方式可能更加方便,首先定义一个xml文件:

文件名:lyt_customer_service_phone.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="25dp"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/person_center_block_bg_frame" >

    <ImageView
        android:layout_width="25.5dp"
        android:layout_height="25dp"
        android:layout_marginRight="10dp"
        android:src="@drawable/personal_center_call_image" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginRight="10dp"
        android:gravity="center"
        android:text="客服电话:4006601360"
        android:textColor="@color/g333333"
        android:textScaleX="1.05"
        android:textSize="16sp" />

</LinearLayout>


然后在java代码中创建一个自定义视图,并且引用它:

文件名:CustomerServicePhone.java

package cn.czl.view;

import cn.czl.R;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;

public class CustomerServicePhone extends LinearLayout {

    public CustomerServicePhone(final Context context, AttributeSet attrs) {
        super(context, attrs);
        ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
                R.layout.lyt_customer_service_phone, this);
        setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                context.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:4006601360")));
            }
        });
    }

    public CustomerServicePhone(Context context) {
        super(context);
    }

}


这样我们就创建成功了,实现了一个包含图片的textview,点击即可拨打电话的组件,下面我们在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="#e8e8e8"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/title_bar"
        android:layout_width="fill_parent"
        android:layout_height="@dimen/top_bar_height"
        android:background="#FFFFFF"
        android:gravity="center_vertical" >

        <RelativeLayout
            android:id="@+id/title_bar_menu_btn"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:background="#FFFFFF"
            android:orientation="vertical" >

            <ImageView
                android:layout_width="28dp"
                android:layout_height="28dp"
                android:layout_alignParentTop="true"
                android:layout_marginTop="5dp"
                android:src="@drawable/topbar_back_selector" />

            <TextView
                android:layout_width="28dp"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_gravity="center_horizontal"
                android:layout_marginBottom="6.5dp"
                android:gravity="center"
                android:text="返回"
                android:textColor="#333333"
                android:textSize="12sp" />
        </RelativeLayout>

        <TextView
            android:id="@+id/title_bar_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:ellipsize="end"
            android:gravity="center"
            android:paddingLeft="75.0dip"
            android:paddingRight="75.0dip"
            android:singleLine="true"
            android:text="我的课程"
            android:textColor="#333333"
            android:textSize="16sp" />
    </RelativeLayout>

    <cn.czl.view.CustomerServicePhone
        android:id="@+id/lyt_customer_service_phone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="29dp"
        android:layout_marginLeft="72.5dp"
        android:layout_marginRight="73dp"
        android:layout_marginTop="20dp" />

</RelativeLayout>


这样我们在java代码中,就不需要每次去定义这个视图的动作了,实现了一个地方定义,多个地方引用的目的。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: