Android5.X之PercentLayout
来源:互联网 发布:黑龙江省统计局数据 编辑:程序博客网 时间:2024/06/05 19:02
引入依赖库
compile 'com.android.support:percent:24.x.x'
主要类
- PercentRelativeLayout(继承自RelativeLayout)
- PercentFrameLayout(继承自FrameLayout )
属性
- layout_widthPercent 设置控件宽度为父容器的宽的百分比
- layout_heightPercent 设置控件高度为父容器的高的百分比
- layout_marginPercent 设置控件外边距为父容器的宽度的百分比
- layout_marginLeftPercent 设置控件与左边控件的距离为父容器的宽度的百分比
- layout_marginTopPercent 设置控件与上方控件的距离为父容器的高度的百分比
- layout_marginRightPercent 设置控件与右边控件的距离为父容器的宽度的百分比
- layout_marginBottomPercent 设置控件与下方控件的距离为父容器的高度的百分比
- layout_marginStartPercent
- layout_marginEndPercent
原来用某些具体单位(如dp)的设置现在都可以用百分比的方式进行设置了,例如设置控件的宽度layout_width原来我们是这样玩的android:layout_width="match_parent"现在用了百分比的属性之后呢,可以这样玩了app:layout_widthPercent="50%",这里的百分比是相对于父容器而言的。
具体使用
xml文件加入命名空间
xmlns:app="http://schemas.android.com/apk/res-auto"
<android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"/> <ImageView android:layout_width="0dp" android:layout_height="0dp" app:layout_widthPercent="50%" app:layout_heightPercent="50%" app:layout_marginTopPercent="25%" app:layout_marginLeftPercent="25%"/> </android.support.percent.PercentRelativeLayout/>
自定义PecentLinearLayout
库中并没有提供PecentLinearLayout,想玩PecentLinearLayout就需要自定义了
public class PercentLinearLayout extends LinearLayout{ private PercentLayoutHelper mPercentLayoutHelper; public PercentLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); mPercentLayoutHelper = new PercentLayoutHelper(this); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { mPercentLayoutHelper.adjustChildren(widthMeasureSpec, heightMeasureSpec); super.onMeasure(widthMeasureSpec, heightMeasureSpec); if (mPercentLayoutHelper.handleMeasuredStateTooSmall()) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); mPercentLayoutHelper.restoreOriginalParams(); } @Override public LayoutParams generateLayoutParams(AttributeSet attrs) { return new LayoutParams(getContext(), attrs); } public static class LayoutParams extends LinearLayout.LayoutParams implements PercentLayoutHelper.PercentLayoutParams { private PercentLayoutHelper.PercentLayoutInfo mPercentLayoutInfo; public LayoutParams(Context c, AttributeSet attrs) { super(c, attrs); mPercentLayoutInfo = PercentLayoutHelper.getPercentLayoutInfo(c, attrs); } @Override public PercentLayoutHelper.PercentLayoutInfo getPercentLayoutInfo() { return mPercentLayoutInfo; } @Override protected void setBaseAttributes(TypedArray a, int widthAttr, int heightAttr) { PercentLayoutHelper.fetchWidthAndHeight(this, a, widthAttr, heightAttr); } public LayoutParams(int width, int height) { super(width, height); } public LayoutParams(ViewGroup.LayoutParams source) { super(source); } public LayoutParams(MarginLayoutParams source) { super(source); } }}
这样我们就有了PecentLinearLayout,原来的LinearLayout的现在都可以用百分比的方式进行设置了。
阅读全文
0 0
- Android5.X之PercentLayout
- Android5.x之CardView
- Android5.X之ToolBar
- android5.x之Palette调色板
- Android5.x新特性之RecyclerGridView
- Android5.x新特性之RecyclerViewHorizontal、Vertical
- Android5.x之RecyclerView使用(1)
- Android5.x之沉浸式状态栏
- Android5.x之沉浸式状态栏(2)
- android5.x之animated-selector类似selector
- android5.x之Activity过渡动画
- Android5.X之Material Design与主题
- Android5.X
- Android5.x 新控件之RecyclerView,CardView,Palette的使用
- Android5.x新特性之 Toolbar和Theme的使用
- Android5.x新特性之CardView立体卡片--阴影、圆角
- Android5.x新特性之ViewOutlineProvider轮廓、阴影---setClipToOutline裁剪
- Android5.x新特性之 Toolbar和Theme的使用
- 开发中前后端数据通信,前后端联调方法
- OpenCV常用函数说明
- Android5.X之Material Design与主题
- Android5.X之ToolBar
- mysql随机插入日期时间
- Android5.X之PercentLayout
- jquery的attr() 与prop()
- Android TV Leanback (六)(卡片视图)
- Android基础之Activity与Intent
- PAT 1016. 部分A+B
- Android性能优化(上)
- Android性能优化(中)
- Android性能优化(下)
- jsp——500错误