Android学习之路(2) 设置视图
一、设置视图宽高
在Android开发中,可以使用LayoutParams类来设置视图(View)的宽度和高度。LayoutParams是一个用于布局的参数类,用于指定视图在父容器中的位置和大小。
下面是设置视图宽度和高度的示例代码:
// 创建一个LayoutParams对象
LayoutParams layoutParams = new LayoutParams(width, height);// 设置视图的LayoutParams参数
view.setLayoutParams(layoutParams);
在上述代码中,width和height分别代表要设置的视图的宽度和高度,可以是具体的像素值,也可以使用特殊常量进行设置,如LayoutParams.WRAP_CONTENT表示自适应内容大小,LayoutParams.MATCH_PARENT表示填充父容器。
例如,如果要将视图的宽度设置为200像素,高度设置为300像素,可以使用以下代码:
// 创建一个LayoutParams对象,设置宽度为200像素,高度为300像素
LayoutParams layoutParams = new LayoutParams(200, 300);// 设置视图的LayoutParams参数
view.setLayoutParams(layoutParams);
还可以通过在xml文件中android:layout_width设置视图宽度,通过android:layout_height设置视图的高度。
通过以上方式,你可以根据需求设置视图的宽度和高度。
第一步:创建Activity:SetBorderActivity.java
第二步:
在activity_set_border.xml中分别使用LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT,和固定长度dp
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="wrap_content是包裹内容大小"android:textColor="#000000"android:background="#999999"android:textSize="18sp"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="match_parent是填充父容器"android:textColor="#000000"android:background="#999999"android:textSize="18sp"/><TextViewandroid:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="可以选择固定的长度"android:textColor="#000000"android:background="#999999"android:textSize="18sp"/></LinearLayout>
效果如此:
我们也可以在java代码中实现:
第一步:在xml文件中添加(需设置为wrap_content)
<TextViewandroid:id="@+id/set_border_java"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="在java代码中实现"android:textColor="#000000"android:background="#999999"android:textSize="18sp"/>
第二步:在java代码中
package com.example.module1;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView;public class SetBorderActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_set_border);TextView border_java= findViewById(R.id.set_border_java);//获取布局参数ViewGroup.LayoutParams params= border_java.getLayoutParams();params.width=0;//设置布局参数border_java.setLayoutParams(params);}
}
应为在Java代码中,默认的单位是px,所以我们需要工具类将dp转换为px
首先我们创建一个Utils和一个Utils类
其中Utils.java中:
package com.example.module1.Utils;import android.content.Context;public class Utils {//根据手机的分辨率从dp的单位转成为px(像素)public static int dip2px(Context context,float dpValue){//获取手机的像素密度(1个px对应几个px)float scale= context.getResources().getDisplayMetrics().density;return (int) (dpValue*scale+0.5f);}
}
在SetBorderActivity.java中:
package com.example.module1;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView;import com.example.module1.Utils.Utils;public class SetBorderActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_set_border);TextView border_java= findViewById(R.id.set_border_java);//获取布局参数ViewGroup.LayoutParams params= border_java.getLayoutParams();//默认单位px单位,需要把dp转化为px;params.width= Utils.dip2px(this,300);//设置布局参数border_java.setLayoutParams(params);}
}
最后修改清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MyApplication"><activityandroid:name=".SetBorderActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
运行结果为:
设置视图的间距
设置视图间距有两种方式:
-
采用layout_margin属性,它指定了当前视图与周围平级视图之间的距离。包括layout_margin,layout_marginLeft,layout_marginTop,layout_marginRight,layout_marginBottom
-
采用padding属性,它指定了当前视图与内部下级视图之间的距离。包括padding,paddingLeft,paddingTop,paddingRight,paddingBottom
第一步:创建SetMarginActivity.java
第二步:在对应的xml文件中
<?xml version="1.0" encoding="utf-8"?>
<!--最外层的布局颜色为蓝色-->
<LinearLayout 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="300dp"android:orientation="vertical"android:background="#00AAFF">
<!--中间层的布局为黄色 --><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_margin="20dp"android:background="#FFFF99"android:padding="60dp"><Viewandroid:layout_width="match_parent"android:layout_height="match_parent"android:background="#FF0000"></View></LinearLayout></LinearLayout>
打开Design:
其中蓝色的宽度为20dp,黄色的宽度为60dp。
设置视图的对其方式
设置视图的对齐方式有两种途径:
- 采用layout_gravity属性,他指定了当前视图相对于上级视图的对齐方式。
- 采用gravity属性,它指定了下级视图相对于当前视图的对其方式。
layout_gravity与gravity的取值包括:left,top,right,bottom,还可以用竖线连接各取值,例如“left|top”表示即靠左又靠上,也就是朝左上角对齐。
第一步:创建Activity 为SetGravityActivity.java
第二部:在对应的xml文件中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="300dp"android:orientation="horizontal"android:background="#ffff99">
<!-- 第一个子布局的颜色为红色,它在上级视图中朝下对其,它的下级视图则靠左对其--><LinearLayoutandroid:layout_width="0dp"android:layout_height="200dp"android:layout_weight="1"android:background="#ff0000"android:layout_margin="10dp"android:padding="10dp"android:layout_gravity="bottom">
<!-- 内部视图的宽度和高度都是100dp,且背景为青色--><Viewandroid:layout_width="100dp"android:layout_height="100dp"android:background="#00ffff"></View></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_height="200dp"android:layout_weight="1"android:background="#ff0000"android:layout_margin="10dp"android:padding="10dp"android:layout_gravity="top"android:gravity="right"><Viewandroid:layout_width="100dp"android:layout_height="100dp"android:background="#00ffff"></View></LinearLayout></LinearLayout>
打开Design
相关文章:

Android学习之路(2) 设置视图
一、设置视图宽高 在Android开发中,可以使用LayoutParams类来设置视图(View)的宽度和高度。LayoutParams是一个用于布局的参数类,用于指定视图在父容器中的位置和大小。 下面是设置视图宽度和高度的示例代码: …...
SIP/VoIP之常见的视频问题
除了语音通话外,视频通话也是SIP协议通话中重要的功能,在实际应用中,经常会遇到一些视频问题,如下(以h264为例) 一、 己方未显示对方视频图像 排查方法: 查看网络抓包中有没有发给已方的视频…...

docker的服务/容器缺少vim问题
背景/问题: docker的服务/容器缺少vim问题 bash: vim: command not found 在docker的mysql服务中安装Vim 1、执行apt-get update root6d8d17e320a0:/# apt-get update问题:文件下载失败 Err:1 http://security.debian.org/debian-security buster/updates InRe…...

HCIP-OpenStack
1、OpenStack概述 OpenStack是一种云操作系统,OpenStack是虚拟机、裸金属和容器的云基础架构。可控制整个数据中心的大型计算、存储和网络资源池,所有资源都通过API或Web界面进行管理。 为什么称OpenStack是云操作系统? 云一般指云计算&…...

前端:Vue.js学习
前端:Vue.js学习 1. 第一个Vue程序2. Vue指令2.1 v-if、v-else-if、v-else2.2 v-for2.3 事件绑定 v-on:2.4 v-model 数据双向绑定2.5 v-bind 绑定属性 3. Vue组件4. Vue axios异步通信5. 计算属性6. 插槽 slots7. 自定义事件内容分发 1. 第一个Vue程序 首先把vue.js拷贝到本地…...
MySQL到Oracle快速上手
第一次做Oracle项目的时候对一些语法区别不太清楚,这里列出一些开发中发现的与MYSQL不同的点 一个用户相当于一个数据库 表空间 表空间是用于存储表、索引和其他数据库对象的逻辑存储结构。每个表空间由一个或多个数据文件组成,这些文件可以位于不同的物…...

机器人CPP编程基础-01第一个程序Hello World
很多课程先讲C/C或者一些其他编程课,称之为基础课程。然后到本科高年级进行机器人专业课学习,这样时间损失非常大,效率非常低。 C/单片机/嵌入式/ROS等这些编程基础可以合并到一门课中进行实现,这些素材已经迭代三轮以上…...

前后端分离------后端创建笔记(03)前后端对接(下)
本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…...
Leet code1049 最后一块石头的重量II
1049 最后一块石头的重量II 【问题描述】 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x < y。那么粉…...

Rust语法:变量,函数,控制流,struct
文章目录 变量可变与不可变变量变量与常量变量的Shadowing标量类型整数 复合类型 函数控制流if elseloop & whilefor in structstruct的定义Tuple Structstruct的方法与函数 变量 可变与不可变变量 Rust中使用let来声明变量,但是let声明的是不可变变量&#x…...

LVS简介及LVS-DR搭建
目录 一. LVS简介: 1.简介 2. LVS工作模式: 3. LVS调度算法: 4. LVS-DR集群介绍: 二.LVS-DR搭建 1.RS配置 1)两台RS,需要下载好httpd软件并准备好配置文件 2)添加虚拟IP(vip&…...
Java基础篇--日期时间类
目录 前言 Instant(时间戳)类 LocalData(日期)类 LocalTime(时间)类 LocalDataTime(日期时间)类 Duration(时间间隔)类 Period(日期间隔)类 Clock(获取时区)类 前言 在开发中经常需要处理日期和时间,Java提供…...
Vue生命周期函数 详解
以下是Vue生命周期函数的流程图和每个周期的代码详解: 流程图: beforeCreate -> created -> beforeMount -> mounted -> beforeUpdate -> updated -> beforeDestroy -> destroyed详解: beforeCreate: 触发时…...

判断链表有环的证明
目录 1.问题 2.证明 3.代码实现 1.问题 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用…...

百度屏蔽词有哪些?其中就有移民关键词指数被屏蔽?
我是百收网SEO,点点上面的头像,欢迎关注我哦! 今日tombkeeper消息爆料:百度指数已经屏蔽“移民”等关键词指数。 大家好,我是百收网SEO商学院的狂潮微课老师,今天我们来讲解第 12 节课关键词优化难度分析…...
代码随想录day02
977.有序数组的平方 ● 力扣题目链接 ● 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 思路 ● 暴力排序,时间复杂度O(n nlogn) ● 使用双指针,时间复杂度O(n) …...

VR时代真的到来了?
业界对苹果的期待是,打造一台真正颠覆性的,给头显设备奠定发展逻辑底座的产品,而实际上,苹果只是发布了一台更强大的头显。 大众希望苹果回答的问题是“我为什么需要一台AR或者VR产品?”,但苹果回答的是“…...
docker run 命令转化为 docker-compose 工具
工作当中需要将 docker run 转换为更方便的 docker-compose 格式,可以使用下面的工具来完成。 转换工具:https://www.composerize.com/?utm_sourceappinn.com 使用介绍:https://www.appinn.com/composerize-for-docker-compose/...

php如何对接伪原创api
在了解伪原创api的各种应用形态之后,我们继续探讨智能写作背后的核心技术。需要说明的是,智能写作和自然语言生成、自然语言理解、知识图谱、多模算法等各类人工智能算法都有紧密的关联,在百度的智能写作实践中,常根据实际需求将多…...

设计模式行为型——模板模式
目录 模板模式的定义 模板模式的实现 模板模式角色 模板模式类图 模板模式举例 模板模式代码实现 模板模式的特点 优点 缺点 使用场景 注意事项 实际应用 模板模式的定义 模板模式(Template Pattern)属于行为型设计模式,又叫模版…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...