900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > android studio 自定义控件

android studio 自定义控件

时间:2021-02-19 06:38:43

相关推荐

android studio 自定义控件

第一种方式:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:background="#ff28f010"android:layout_height="100px"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/ic_launcher"android:id="@+id/imageButton"android:gravity="center"android:text="返回"android:textColor="#f0a4cc"android:layout_margin="5dp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="100px"android:id="@+id/textView2"android:text="标题"android:gravity="center_vertical|center_horizontal"android:textSize="45px"android:layout_weight="0.23" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/imageButton2"android:layout_margin="5dp"android:background="@drawable/ic_launcher"android:textColor="#f0a4cc"android:text="编辑"/></LinearLayout>

如果其他的地方引用,直接使用<include layout="@layout/title"/>

第二种方式:

xml

<LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><RelativeLayoutandroid:layout_width="match_parent"android:background="#0000ff"android:layout_height="45dp"><Buttonandroid:id="@+id/title_bar_left"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_centerVertical="true"android:layout_marginLeft="5dp"android:background="@mipmap/ic_launcher"android:minHeight="45dp"android:minWidth="45dp"android:textSize="14sp" /><TextViewandroid:id="@+id/title_bar_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="登录"android:singleLine="true"android:textSize="17sp" /><Buttonandroid:id="@+id/title_bar_right"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:layout_marginRight="7dp"android:text="提交"android:textColor="@android:color/white"android:background="@null"android:minHeight="45dp"android:minWidth="45dp"android:textSize="14sp" /></RelativeLayout></LinearLayout>

attrs。xml代码

<declare-styleable name="CustomTitleBar"><attr name="title_background_color" format="reference|integer" /><attr name="left_button_visible" format="boolean" /><attr name="right_button_visible" format="boolean" /><attr name="title_text" format="string" /><attr name="title_text_color" format="color" /><attr name="title_text_drawable" format="reference|integer" /><attr name="right_button_text" format="string" /><attr name="right_button_text_color" format="color" /><attr name="right_button_drawable" format="reference|integer" /><attr name="left_button_text" format="string" /><attr name="left_button_text_color" format="color" /><attr name="left_button_drawable" format="reference|integer" /></declare-styleable>

自定义:

public class CustomTitleBar extends RelativeLayout {private Button titleBarLeftBtn;private Button titleBarRightBtn;private TextView titleBarTitle;public CustomTitleBar(Context context, AttributeSet attrs) {super(context, attrs);LayoutInflater.from(context).inflate(R.layout.custom_title_bar, this, true);titleBarLeftBtn = (Button) findViewById(R.id.title_bar_left);titleBarRightBtn = (Button) findViewById(R.id.title_bar_right);titleBarTitle = (TextView) findViewById(R.id.title_bar_title);TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.CustomTitleBar);if (attributes != null) {//处理titleBar背景色int titleBarBackGround = attributes.getResourceId(R.styleable.CustomTitleBar_title_background_color, Color.GREEN);setBackgroundResource(titleBarBackGround);//先处理左边按钮//获取是否要显示左边按钮boolean leftButtonVisible = attributes.getBoolean(R.styleable.CustomTitleBar_left_button_visible, true);if (leftButtonVisible) {titleBarLeftBtn.setVisibility(View.VISIBLE);} else {titleBarLeftBtn.setVisibility(View.INVISIBLE);}//设置左边按钮的文字String leftButtonText = attributes.getString(R.styleable.CustomTitleBar_left_button_text);if (!TextUtils.isEmpty(leftButtonText)) {titleBarLeftBtn.setText(leftButtonText);//设置左边按钮文字颜色int leftButtonTextColor = attributes.getColor(R.styleable.CustomTitleBar_left_button_text_color, Color.WHITE);titleBarLeftBtn.setTextColor(leftButtonTextColor);} else {//设置左边图片icon 这里是二选一 要么只能是文字 要么只能是图片int leftButtonDrawable = attributes.getResourceId(R.styleable.CustomTitleBar_left_button_drawable, R.mipmap.ic_launcher);if (leftButtonDrawable != -1) {titleBarLeftBtn.setBackgroundResource(leftButtonDrawable);}}//处理标题//先获取标题是否要显示图片iconint titleTextDrawable = attributes.getResourceId(R.styleable.CustomTitleBar_title_text_drawable, -1);if (titleTextDrawable != -1) {titleBarTitle.setBackgroundResource(titleTextDrawable);} else {//如果不是图片标题 则获取文字标题String titleText = attributes.getString(R.styleable.CustomTitleBar_title_text);if (!TextUtils.isEmpty(titleText)) {titleBarTitle.setText(titleText);}//获取标题显示颜色int titleTextColor = attributes.getColor(R.styleable.CustomTitleBar_title_text_color, Color.WHITE);titleBarTitle.setTextColor(titleTextColor);}//先处理右边按钮//获取是否要显示右边按钮boolean rightButtonVisible = attributes.getBoolean(R.styleable.CustomTitleBar_right_button_visible, true);if (rightButtonVisible) {titleBarRightBtn.setVisibility(View.VISIBLE);} else {titleBarRightBtn.setVisibility(View.INVISIBLE);}//设置右边按钮的文字String rightButtonText = attributes.getString(R.styleable.CustomTitleBar_right_button_text);if (!TextUtils.isEmpty(rightButtonText)) {titleBarRightBtn.setText(rightButtonText);//设置右边按钮文字颜色int rightButtonTextColor = attributes.getColor(R.styleable.CustomTitleBar_right_button_text_color, Color.WHITE);titleBarRightBtn.setTextColor(rightButtonTextColor);} else {//设置右边图片icon 这里是二选一 要么只能是文字 要么只能是图片int rightButtonDrawable = attributes.getResourceId(R.styleable.CustomTitleBar_right_button_drawable, -1);if (rightButtonDrawable != -1) {titleBarRightBtn.setBackgroundResource(rightButtonDrawable);}}attributes.recycle();}}public void setTitleClickListener(OnClickListener onClickListener) {if (onClickListener != null) {titleBarLeftBtn.setOnClickListener(onClickListener);titleBarRightBtn.setOnClickListener(onClickListener);}}public Button getTitleBarLeftBtn() {return titleBarLeftBtn;}public Button getTitleBarRightBtn() {return titleBarRightBtn;}public TextView getTitleBarTitle() {return titleBarTitle;}}

最后其他布局使用

<com.cqytjr.www.cheji.view.CustomTitleBarandroid:layout_width="match_parent"android:layout_height="45dp"android:layout_marginTop="10dp"tools:left_button_text="左边"tools:left_button_text_color="#ff0000"tools:right_button_drawable="@mipmap/titlebar_add_icon"tools:title_background_color="@color/blue"tools:title_text="标题5" />

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。