Android 百分比布局

来源:互联网 发布:宁波电话会议软件 编辑:程序博客网 时间:2024/05/20 03:39

1.首先导入相应的库。这里写图片描述


2.库中提供了PercentRelativeLayout和PercentFrameLayout2中布局

  • heightPercent:百分比表示高度
  • widthPercent:百分比表示宽度
  • marginBottomPercent:百分比表示底部的间隔
  • marginEndPercent:百分比表示距离最后一个View之间的间隔
  • marginLeftPercent:百分比表示左边的间隔
  • marginPercent:百分比表示View之间的间隔
  • marginRightPercent:百分比表示右边的间隔
  • marginStartPercent:百分比表示距离第一个View之间的间隔
  • marginTopPercent:百分比表示顶部的间隔

3.<android.support.percent.PercentRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="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:orientation="vertical"
tools:context="com.tcl.navigator.myapplication.MainActivity">
<TextView
android:id="@+id/tv"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@android:color/darker_gray"
android:text="heightPercent30%_widthPercent50%"
app:layout_heightPercent="30%"
app:layout_widthPercent="50%"/>
<TextView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_toRightOf="@id/tv"
android:background="@android:color/holo_blue_light"
android:text="heightPercent40%_widthPercent50%"
app:layout_heightPercent="40%"
app:layout_widthPercent="50%"/>
<TextView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_below="@id/tv"
android:background="@android:color/holo_green_dark"
android:text="heightPercent10%_widthPercent50%"
app:layout_heightPercent="10%"
app:layout_widthPercent="50%"/>
</android.support.percent.PercentRelativeLayout>


4.运行效果
这里写图片描述


5.Goggle没有提供PercentLinearLayout,但是我们可以根据PercentLayoutHelper自定义一个PercentLinearLayout。

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);          }      }  }  
1 0
原创粉丝点击