Android视图(View)

本文最后更新于:2022年12月17日 中午

视图(View)

设置视图的宽高

设置视图的宽高有两种途径:

在xml代码中设置视图宽高

视图宽度通过属性android:layout_width表达,视图高度通过属性android:layout_height表达,宽高的取值主要有下列三种:

  • match_parent:表示与上级视图保持一致。
  • wrap_content:表示与内容自适应。
  • 以dp为单位的具体尺寸。

在java代码中设置视图宽高

首先确保XML中的宽高属性值为wrap_content,接着打开该页面对应的Java代码,依序执行以下三个步骤:

  • 调用控件对象的getLayoutParams方法,获取该控件的布局参数。
  • 布局参数的width属性表示宽度,height属性表示高度,修改这两个属性值。
  • 调用控件对象的setLayoutParams方法,填入修改后的布局参数使之生效。
// 获取布局参数(含宽度和高度)
ViewGroup.LayoutParams params = tv.getLayoutParams();
// 修改布局参数中的宽度数值,注意默认px单位,所以要一个工具类将 dp 转换为 px
params.width = Utils.dip2px(this, 300);
// 设置布局参数(
tv.setLayoutParams(params);

dp 转 px 工具类

public class Utils {
    // 根据手机的分辨率从 dp 的单位转成为 px(像素)
    public static int dip2px(Context context, float dpValue) {
        // 获取当前手机的像素密度(1个dp对应几个px)
        float scale = context.getResources().getDisplayMetrics().density;
        // 四舍五入取整
        return (int) (dpValue * scale + 0.5f);
    }
}

context(上下文) 的妙用!

设置视图的间距

设置视图的间距有两种途径:

  • 采用layout_margin属性,它指定了当前视图与周围平级视图之间的距离(外边距)。包括layout_marginlayout_marginLeftlayout_marginToplayout_marginRightlayout_marginBottom

  • 采用padding属性,它指定了当前视图与内部下级视图之间的距离(内边距)。包括paddingpaddingLeftpaddingToppaddingRightpaddingBottom

marginpadding属性适用于所有视图,附视图家族的依赖继承关系:

视图家族的依赖继承关系

设置视图的对齐方式

设置视图的对齐方式有两种途径:

  • 采用layout_gravity属性,它指定了当前视图相对于上级视图的对齐方式。
  • 采用gravity属性,它指定了下级视图相对于当前视图的对齐方式。
    layout_gravitygravity的取值包括: lefttoprightbottom,还可以用竖线连接各取值,例如left|top表示即靠左又靠上,也就是朝左上角对齐。

Android 中 marginLeft 和 marginStart 的区别

goole官方解释


Android视图(View)
https://yorick-ryu.github.io/Android/Android视图(View)/
作者
Yorick
发布于
2022年11月28日
许可协议