在App开发过程中,通常会遇到向这样的布局(如下图),说设计起来也不麻烦,不错经常写起来也挺烦的;
为了以后开发方便,自定义了一个这样的通用的样式,每次写时,只需要引入对应的样式就可.
首先要自定义一个view,为了简单起见,通常是继承RelativeLayout(LinearLayout 等也可),复写构成函数,并初始化自己要塞的布局;
public class TextViewClickUi extends RelativeLayout {
private TextView itemName;
private String namespace = "http://schemas.android.com/apk/res/cn.liujigang.mobilefragment";
private String text;
public TextViewClickUi(Context context) {
super(context);
init(context);
}
public TextViewClickUi(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
text = attrs.getAttributeValue(namespace, "text");
itemName.setText(text);
}
public TextViewClickUi(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
text = attrs.getAttributeValue(namespace, "text");
itemName.setText(text);
}
private void init(Context context) {
View view = View.inflate(context, R.layout.view_textview_clickui, this);
itemName = (TextView) view.findViewById(R.id.tv_click_textview);
}
public void setText(CharSequence text) {
itemName.setText(text);
}
}
init函数中,初始化要显示的布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/select_item_thrid"
android:clickable="true"
android:focusable="true" >
<TextView
android:id="@+id/tv_click_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingBottom="12dip"
android:paddingLeft="10dip"
android:paddingTop="12dip"
android:textColor="@android:color/black"
android:textSize="15sp" />
<ImageView
android:layout_width="8.0dip"
android:layout_height="16.0dip"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="7dip"
android:contentDescription="@null"
android:src="@drawable/ljg_more" />
</RelativeLayout>
具体代码中的应用
<cn.liujigang.mobilefragment.widget.TextViewClickUi
android:id="@+id/tvcu_share"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tvit:text="分享给朋友" />
注意:要在根布局中添加约束,eg:
xmlns:tvit="http://schemas.android.com/apk/res/cn.liujigang.mobilefragment"
该约束要和自定义的自定义一个view中的
namespace要保持一致.约束的后缀是你的AndroidManifest.xml中的package值一致;
对了还有一点就是:需要在values中的attrs.xml中添加上
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="SettingView">
<attr name="text" format="string" />
</declare-styleable>
</resources>