获得相对于父类的位置
/**
* 获得此View左边相对其父类的X坐标位置。
*/
public final int getLeft() {
return mLeft;
}
/**
* 获得此View右边相对其父类的X坐标位置。
*/
public final int getRight() {
return mRight;
}
/**
* 获得此View顶边相对其父类的Y坐标位置。
*/
public final int getTop() {
return mTop;
/**
* 获得此View底边相对其父类的Y坐标位置。
*/
public final int getBottom() {
return mBottom;
}
获取空白填充大小
/**
* 获取此View的顶部空白填充大小
*/
public int getPaddingTop() {
return mPaddingTop;
}
/**
* 获取此View的底部空白填充大小
*/
public int getPaddingBottom() {
return mPaddingBottom;
}
/**
* 获取此View的左边空白填充大小
*/
return mPaddingLeft;
}
/**
* 获取此View的右边空白填充大小
*/
public int getPaddingRight() {
return mPaddingRight;
}
布局
/**
* 查看和测量View,以确定其内容的测量宽度和测量高度。此方法被measure(int, int)调用,应该由子类重写,以提供准确,高效的內容测量。
*
* CONTRACT: 当重写这个方法的时候, 你必须调用setMeasuredDimension(int, int),去存储测量的内容宽度和高度.
* 如果不这样做会引发一个IllegalStateException, 是被measure(int, int)抛出的.
* 调用父类的onMeasure(int, int)是不能存储测量结果的.
*
* 基类默认的测量实现是对于背景大小, 除非更大的尺寸被MeasureSpec允许. 子类应当重写onMeasure(int,
* int)以便提供更好的内容测量.
*
* 如果这个方法被重写, 他子类的责任是确保测量高度和宽度至少是此View的最小高度和宽度(getSuggestedMinimumHeight() and
* getSuggestedMinimumWidth()).
*
* 参数: widthMeasureSpec 向父类请求的横向空间。这些请求被编码在android.view.View.MeasureSpec里面
* heightMeasureSpec 向父类请求的竖向空间。这些请求被编码在android.view.View.MeasureSpec里面
* */
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec),
getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec));
}
事件
/**
* 实现这个方法去处理触屏事件
*
* 在View中被重写
*
* 参数:
* event 事件. 返回: 如果事件被处理返回true, 否则返回false.
* */
public boolean onTouchEvent(MotionEvent event) {
...
}
注释:请参见ViewGroup中的方法:onInterceptTouchEvent(MotionEvent ev)