通过onMeasure方法修改布局高跟宽的比例
来源:互联网 发布:linux开源社区 编辑:程序博客网 时间:2024/04/28 14:53
试用于轮播图的屏幕宽跟高的固定比例
自己定义布局继承重写onMeasure方法
<com.sanwn.ddmb.view.AppBarLayoutViewandroid:id="@+id/app_bar"android:layout_width="match_parent"android:layout_height="wrap_content"app:ratio="2">
<declare-styleable name="RatioLayout"><attr name="ratio" format="float" /></declare-styleable>
重写类是实例
public class AppBarLayoutView extends AppBarLayout {private static final String TAG = "RatioLayout";// 宽和高的比例private float ratio = 0.0f;public AppBarLayoutView(Context context) {super(context);}public AppBarLayoutView(Context context, AttributeSet attrs) {super(context, attrs);TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RatioLayout);ratio = a.getFloat(R.styleable.RatioLayout_ratio, 0.0f);a.recycle();}public void setRatio(float f) {ratio = f;}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int widthMode = MeasureSpec.getMode(widthMeasureSpec);int heightMode = MeasureSpec.getMode(heightMeasureSpec);int width = MeasureSpec.getSize(widthMeasureSpec) - getPaddingLeft() - getPaddingRight();int height = MeasureSpec.getSize(heightMeasureSpec) - getPaddingTop() - getPaddingBottom();if (widthMode == MeasureSpec.EXACTLY && heightMode != MeasureSpec.EXACTLY && ratio != 0.0f) {height = (int) (width / ratio + 0.5f);heightMeasureSpec = MeasureSpec.makeMeasureSpec(height + getPaddingTop() + getPaddingBottom(),MeasureSpec.EXACTLY);} else if (widthMode != MeasureSpec.EXACTLY && heightMode == MeasureSpec.EXACTLY && ratio != 0.0f) {width = (int) (height * ratio + 0.5f);widthMeasureSpec = MeasureSpec.makeMeasureSpec(width + getPaddingLeft() + getPaddingRight(),MeasureSpec.EXACTLY);}Log.d(TAG, "onMeasure: ==="+height+"==="+width);super.onMeasure(widthMeasureSpec, heightMeasureSpec);}}
阅读全文
0 0
- 通过onMeasure方法修改布局高跟宽的比例
- 自定义宽高比例的布局控件
- onMeasure的宽高生成解析
- Android布局的高按照比例来分布
- flex module 宽高的比例设置
- 等比例宽高的ImageView
- css宽高比例
- View的onMeasure方法
- View 的onMeasure方法
- Android的onMeasure方法
- android 的onMeasure方法
- listview的onmeasure方法
- 自定义的onMeasure()方法
- View的onMeasure方法
- listview中的item布局跟标签宽高设置失效的问题
- Android中通过代码修改bitmap的宽高.
- 通过查询资料理解onMeasure()方法
- 伸缩布局的伸缩比例
- ccf "I'm stuck!"(AC)
- 引用单元测试模块unittest框架(二)
- 黑客攻击手段升级:恶意软件植入合法软件之中
- 软件众包平台排行最新
- 032、匿名内部类
- 通过onMeasure方法修改布局高跟宽的比例
- String,StringBuffer,StringBulider的区别
- Java语言基础小结6
- DOM(二)——节点
- GCD
- hibernate详解(五)---一对一关联映射
- gcd题目
- chdir,getcwd
- 数据结构