android 自定义控件
生活随笔
收集整理的這篇文章主要介紹了
android 自定义控件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
自定義一般分三種情況
1. 自定義布局
2. 自定義控件
3.直接繼承View
?
下面來著eoe例子,實現自定義控件
1. 自定義屬性
? res/values/attrs.xml 自定義屬性
?
<?xml version="1.0" encoding="utf-8"?> <resources><declare-styleable name="progress"><attr name="text" format="string" /><attr name="textSize" format="dimension" /></declare-styleable> </resources>2. 自定義控件,實現帶有?AttributeSet的構造方法?
package com.test.uidemo;import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.util.Log; import android.widget.TextView;import com.test.uidemo.R;/*** 參考eoe書籍* 自定義控件* 實現用一個邊框把文字包裹.*/ public class MyTextView extends TextView {public MyTextView(Context context) {super(context);}public MyTextView(Context context, AttributeSet attrs) {super(context, attrs);TypedArray attr = context.obtainStyledAttributes(attrs, R.styleable.progress);setText(attr.getString(R.styleable.progress_text));setTextSize(attr.getDimension(R.styleable.progress_textSize, 16));Log.i("Text", attr.getString(R.styleable.progress_text));}protected void onDraw(Canvas canvas){super.onDraw(canvas);Paint paint = new Paint();paint.setColor(android.graphics.Color.RED);canvas.drawLine(0,0,this.getWidth()-1,0,paint);canvas.drawLine(0,0,0,this.getHeight()-1,paint);canvas.drawLine(this.getWidth()-1,0,this.getWidth()-1,this.getHeight()-1,paint);canvas.drawLine(0,this.getHeight()-1,this.getWidth()-1,this.getHeight()-1,paint);}}3. 使用自定義控件
??
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:progress="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.test.uidemo.MainActivity"><com.test.uidemo.MyTextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"progress:text="自定義"progress:textSize="30dp"android:layout_centerVertical="true"android:layout_alignParentRight="true"android:layout_alignParentEnd="true"></com.test.uidemo.MyTextView></RelativeLayout> View Code?
轉載于:https://www.cnblogs.com/newlangwen/p/5357763.html
總結
以上是生活随笔為你收集整理的android 自定义控件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭配上一个blog文件名保的TXT实现文
- 下一篇: 动态规划——最长公共子序列长度