盒子
盒子
文章目录
  1. 屏幕适配,单位换算
  2. 常规属性
  3. 线形布局
  4. 表格
  5. 约束布局
  6. 帧布局

布局

屏幕适配,单位换算

public static int dp2px(Context context, float dpValue) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue, context.getResources().getDisplayMetrics());
}

public static int sp2px(Context context, float spValue) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spValue, context.getResources().getDisplayMetrics());
}

常规属性

<!-- 子控件,默认居左/右/中 -->
android:gravity="left|top|center"
<!-- 相对父控件,居左/右/中 -->
android:layout_gravity="left|top|center"

线形布局

<!-- android:orientation: 竖向vertical, 横向:horizontal -->
<!-- android:gravity: 内部元素元素居中 -->
<LinearLayout
android:orientation="vertical"
android:gravity="center"
...>
</LinearLayout>
<!-- 百分比分割 -->
<!--Button宽度根据自己内容计算, 剩余宽度由EditText按照weight值均分-->
<LinearLayout
android:orientation="horizontal">
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<!-- 备份比布局 -->
<!-- 在app/build.gradle追加支持: com.android.support:percent -->
dependencies {
compile 'com.android.support:percent:26.+'
}

<!--XML-->
<android.support.percent.PercentFrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button1"
android:text="Button 1"
android:layout_gravity="left|top"
app:layout_widthPercent="50%"
app:layout_heightPercent="50%" />
<Button
android:id="@+id/button2"
android:text="Button 2"
android:layout_gravity="right|top"
app:layout_widthPercent="50%"
app:layout_heightPercent="50%" />
<Button
android:id="@+id/button3"
android:text="Button 3"
android:layout_gravity="left|bottom"
app:layout_widthPercent="50%"
app:layout_heightPercent="50%" />
<Button
android:id="@+id/button4"
android:text="Button 4"
android:layout_gravity="right|bottom"
app:layout_widthPercent="50%"
app:layout_heightPercent="50%" />
</android.support.percent.PercentFrameLayout>

表格

<!-- 表格项宽度是否自动拉伸 -->
<TableLayout
android:layout_below="@id/tableLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:stretchColumns="1">
<TableRow>
<TextView
android:text="文字"
android:padding="3dp" />
<TextView
android:text="右对齐文字"
android:gravity="right"
android:padding="3dp" />
</TableRow>
</TableLayout>

约束布局

<!-- layout_constraint: 指定父控件 或者指定兄弟控件即可 -->
<android.support.constraint.ConstraintLayout>
<LinearLayout
android:id="@+id/layout"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@+id/layout_control"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/layout_scan">
</LinearLayout>
</android.support.constraint.ConstraintLayout>
<!-- 相对布局 -->
android:layout_centerHorizontal="true" <!--上下居中-->
android:layout_centerVertical="true" <!--左右居中-->

android:layout_alignParentRight="true" <!--相对父控件: 右边界对齐-->
android:layout_alignTop="@id/button" <!--上边界对齐-->

android:layout_below="@id/text" <!--在指定元素之下-->
android:layout_toLeftOf="@id/button" <!--在指定元素之左-->

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--相对父控件左上角对齐-->
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:text="Button1" />
<!--相对父控件居中-->
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Button2" />
<!--相对button2居上,靠左-->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button2"
android:layout_toLeftOf="@+id/button2"
android:text="Button3" />
<!--相对button2居下,靠右-->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/button2"
android:layout_toRightOf="@+id/button2"
android:text="Button4" />
<!--相对button2居下,左边界对齐-->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/button2"
android:layout_alignLeft="@+id/button2"
android:text="Button5" />
</RelativeLayout>

帧布局

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:text="Button1" />
<!--边界裁剪: android:layout_gravity="center|clip_vertical|clip_horizontal"-->
<!--铺满: fill, fill_horizontal, fill_vertical-->
</FrameLayout>
支持一下
扫一扫,支持一下
  • 微信扫一扫
  • 支付宝扫一扫