TextView组合控件封装

2017-08-16  本文已影响0人  Ayres
Paste_Image.png

每个应用都有个人中心,可能其他页面也有类似,如果每个页面都去写比较麻烦,我们可以封装为一个控件使用

一、先上布局

  <?xml version="1.0" encoding="utf-8"?>
  <com.zhy.autolayout.AutoRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" android:layout_width="match_parent"
  android:background="@color/white"
  android:layout_height="90px">

<TextView
    android:id="@+id/m_tv_infoname"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_marginLeft="30px"
    android:text="订单编号"
    android:textColor="@color/login_line_focus"
    android:textSize="28px" />

<TextView
    android:id="@+id/m_tv_infovalue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_toLeftOf="@+id/iv_you"
    android:layout_marginRight="20px"
    android:ellipsize="end"
    android:maxLength="35"
    android:singleLine="true"
    android:textColor="@color/login_line_focus"
    android:textSize="28px" />
<ImageView
    android:id="@+id/iv_you"
    android:src="@mipmap/you"
    android:layout_marginRight="30px"
    android:layout_centerVertical="true"
    android:layout_alignParentRight="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
</com.zhy.autolayout.AutoRelativeLayout>

二、自定义属性

   <!-- 自定义view-->
  <declare-styleable name="InfoTextView">
    <attr name="leftname" format="string" /> <!-- format : 类型 -->
    <attr name="righttext" format="string" /> <!-- format : 类型 -->
  </declare-styleable>

三、自定义view

    public class InfoTextView extends RelativeLayout {
    TextView  m_tv_ordername;
   TextView m_tv_ordervalue;
public InfoTextView(Context context) {
    super(context);
    initView(context);
}
public InfoTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    initView(context);
    TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.InfoTextView);
    m_tv_ordername.setText(ta.getString(R.styleable.InfoTextView_leftname));
    m_tv_ordervalue.setText(ta.getString(R.styleable.InfoTextView_righttext));

}
public InfoTextView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    initView(context);
}
private void initView(Context context) {
    // TODO Auto-generated method stub
    View.inflate(context, R.layout.m_infotext, this);
    m_tv_ordername = (TextView) findViewById(R.id.m_tv_infoname);
    m_tv_ordervalue = (TextView) findViewById(R.id.m_tv_infovalue);
}
//设置内容
public void setMTVtext(String mvalue)
{
    m_tv_ordervalue.setText(mvalue);
}
public String getMTVtext()
{
    return m_tv_ordervalue.getText().toString().trim();
}
}

四、使用

  <com.yaolai.client.view.InfoTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:leftname="姓名"
    app:righttext="张三"/>

就会实现如下效果

Paste_Image.png
上一篇下一篇

猜你喜欢

热点阅读