自定义组合控件小demo

1.组合控件的布局文件 textwithedittext.xml

样式1.png


<?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="60dp"
              android:background="#fff"
              android:orientation="horizontal">

    <TextView
        android:id="@+id/left_text"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginLeft="8dp"
        android:gravity="center_vertical"
        android:text="左侧文本"
        android:textSize="16dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginLeft="5dp"
        android:gravity="center_vertical"
        android:text=":"
        android:textSize="18dp"/>

    <EditText
        android:id="@+id/right_edittext"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="5dp"
        android:background="@null"
        android:hint="输入框文本"/>

</LinearLayout>


2.在values/attrs.xml写一个自定义属性

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="mygroupview" >
        <attr name="textName" format="string"/>   //左侧文本名称
        <attr name="et_hint" format="string"/>    //edittext的hint内容
    </declare-styleable>
</resources>



3.新建一个类,并给出set get方法

package com.example.a1.testtest;

import android.content.Context;
import android.content.res.TypedArray;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * Created by liudehua on 2017/5/17.
 */

public class TextWithEdittextView extends LinearLayout {

    private View mView;
    private TextView MTextView;
    private EditText mEdittext;
    private TypedArray mAttributes;

    public TextWithEdittextView(@NonNull Context context) {
        super(context);
    }
/**
 * 在含有AttributeSet attrs
 * 的构造方法中做处理*/
    public TextWithEdittextView(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);

        initView();//初始化你的布局文件

        /**
         * 获取属性集
         * 此处的mygroupview对应你在attrs中的name
         * <declare-styleable name="mygroupview" >
         *     */
        mAttributes = context.obtainStyledAttributes(attrs, R.styleable.mygroupview);

        MTextView.setText(mAttributes.getString(R.styleable.mygroupview_textName));
        mEdittext.setHint(mAttributes.getString(R.styleable.mygroupview_et_hint));
    }


    private void initView() {
        mView = LayoutInflater.from(getContext()).inflate(R.layout.textwithedittext, this,true);
        MTextView = (TextView)mView.findViewById(R.id.left_text);
        mEdittext = (EditText)mView.findViewById(R.id.right_edittext);
    }

    public void setTextLeft(String str) {
        MTextView.setText(str);
    }

    public String getTextLeft() {
        return MTextView.getText().toString();
    }

    public void setHint(String string) {
        mEdittext.setHint(string);
    }

    public String getEdittext() {
        return mEdittext.getText().toString();
    }


}



4.使用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:linc="http://schemas.android.com/apk/res/com.example.a1.testtest"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">

    <com.example.a1.testtest.TextWithEdittextView
        android:id="@+id/siv"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        linc:et_hint="hint"
        linc:textName="asas">
    </com.example.a1.testtest.TextWithEdittextView>

    <TextView
        android:id="@+id/textaaaa"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:text="000"/>
</LinearLayout>

自定义命名空间 必须加上 格式为:xmlns:“随便写”="http://schemas.android.com/apk/res/包名"

xmlns:linc="http://schemas.android.com/apk/res/com.example.a1.testtest"



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值