Android 视图系统入门指南

1. View:界面的最小单位

  • 本质:屏幕上的一个矩形区域,能显示内容或接收触摸。
  • 比喻:就像乐高积木,是组成界面的最小单位。
  • 常见子类
    • TextView(文字积木)、Button(按钮积木)、ImageView(图片积木)。
  • 关键方法
    • setText()setBackgroundColor()setOnClickListener()
    • ******************************************************************************************
  1. ViewGroup:收纳盒和组织者
  • 本质:特殊的 View,能装下其他 View 和 ViewGroup,形成层级结构。
  • 比喻:就像乐高收纳盒,可以把积木按规则排列。
  • 常见子类
    • LinearLayout(排队收纳盒)、RelativeLayout(相对位置收纳盒)、ConstraintLayout(现代灵活收纳盒)。
  • 关键方法
    • addView()removeView()getChildAt()
    • *************************************************************************************

3. LayoutParams:摆放说明书

  • 本质:告诉 ViewGroup 如何摆放子 View 的 "规则"。
  • 比喻:就像乐高积木的拼搭说明书,指定积木的大小和位置。
  • 常见属性
    • width/height(大小)、gravity(对齐方式)、margin(边距)。
  • 注意
    • 不同 ViewGroup 有自己的 LayoutParams(如LinearLayout.LayoutParams
    • **************************************************************************************

4. MarginLayoutParams:带边距的豪华说明书

  • 本质LayoutParams的子类,增加了边距(margin)功能。
  • 比喻:普通说明书只能拼积木,豪华版还能指定积木之间的距离。
  • 关键属性
    • marginLeft/Top/Right/Bottom(四边边距)。
java 复制代码
// 1. 创建一个TextView(乐高积木)
TextView textView = new TextView(this);
textView.setText("Hello");

// 2. 创建一个LinearLayout(收纳盒)
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);

// 3. 给TextView设置摆放规则(说明书)
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, // 宽度:包裹内容
    LinearLayout.LayoutParams.WRAP_CONTENT  // 高度:包裹内容
);
params.topMargin = 20; // 上边距20像素
textView.setLayoutParams(params);

// 4. 将TextView放入LinearLayout(把积木放进收纳盒)
layout.addView(textView);

// 5. 将LinearLayout添加到Activity(把收纳盒放到房间里)
setContentView(layout);
相关推荐
段娇娇1 天前
Android jetpack LiveData(一)使用篇
android·android jetpack
XiaoLeisj1 天前
Android Jetpack 页面架构实战:从 LiveData、ViewModel 到 DataBinding 的生命周期管理与数据绑定
android·java·架构·android jetpack·livedata·viewmodel·databinding
似水明俊德1 天前
15-C#
android·开发语言·c#
阿拉斯攀登1 天前
第 19 篇 驱动性能优化与功耗优化实战
android·驱动开发·瑞芯微·嵌入式驱动·安卓驱动
91刘仁德2 天前
C++ 内存管理
android·c语言·数据结构·c++·经验分享·笔记·算法
小强开学前2 天前
自定义 Drawable 实现任意高度纯圆角背景及玻璃效果
android
秃了也弱了。2 天前
ElasticSearch:优化案例实战解析(持续更新)
android·java·elasticsearch
恋猫de小郭2 天前
Kotlin 在 2.0 - 2.3 都更新了什么特性,一口气带你看完这两年 Kotlin 更新
android·前端·flutter
墨狂之逸才2 天前
React Native 移动项目目录导致的 Android 编译失败问题及解决方案
android·react native
feng一样的男子2 天前
住在手机里的“小龙虾” (OpenClaw):接入本地模型,解决记忆“装死”顽疾
android·ai·智能手机·openclaw