Android开发中关于Ui的语法糖

一、layout_margin和padding

android:layout_margin=“10dp”,android:padding="10dp"区别

  1. android:layout_margin="10dp"

    • 适用对象:用于调整 View 与其父容器或相邻 View 之间的距离,即外边距(margin)。
    • 效果:设置该属性后,View 与其父容器或相邻 View 之间会产生一定的间隔,增加 View 之间的距离。
  2. android:padding="10dp"

    • 适用对象:用于控制 View 内部内容与 View 边界之间的距离,即内边距(padding)。
    • 效果:设置该属性后,View 内部内容(如 TextView 中的文本、ImageView 中的图片等)与 View 边界之间会产生一定的间隔,从而使 View 内部的内容离边界有一定距离。
    <LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="@color/blue"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World"android:padding="10dp"android:background="@color/orange" />
    </LinearLayout>
    

二、android:visibility可见与不可见

所有的Android控件都具有这个属性,可以通过android:visibility 进行指定,可选值有3种:visibleinvisiblegone

visible表示控件是可见的,这个值是默认值,不指定android:visibility时,控件都是可见的。

invisbale 表示控件不可见,但是它仍然占据着原来的位置和大小,可以理解成控件变成透明状态了。

gone 则表示控件不仅不可见,而且不再占用任何屏幕空间。

我们还可以通过代码来设置控件的可见性,使用的是setVisibility()方法,可以传入View.VISIBLEView.INVISIBLEView.G0NE这3种值。

三、android:ellipsize文本的缩略方式

当文本超出控件的宽度时,文本的缩略方式。

android:ellipsize属性可以设置以下几种值:

  1. none: 默认值,不做省略处理,当文本超过TextView的宽度时,会自动换行显示文本。
  2. start: 在文本的开头处进行省略,保留文本的末尾部分。
  3. middle: 在文本的中间处进行省略,保留文本的开头和末尾部分。
  4. end: 在文本的末尾处进行省略,默认情况下,超过TextView宽度的文本会在末尾处用省略号表示。
  5. marquee: 当文本过长时,使用水平滚动来显示文本,类似于跑马灯效果。需要设置android:singleLine="true"android:scrollHorizontally="true"属性。文本将以水平滚动的方式显示,并且会不断滚动直到文本完全展示或用户将焦点移出TextView。

四、onActivityCreated弃用后的替代方案

谷歌为了管理Fragment的生命周期,实现了 LifecycleOwner,暴露了一个Lifecycle你可以通过getLifecycle() 方法访问的对象 。

​ 因为onActivityCreated()是宿主Activity的onCreate()之后立即调用,所以可以在onAttach的时候,通过订阅Activitylifecycle来获取ActivityonCreate()事件,记得要removeObserver

现在,官方推荐使用Fragment#onViewCreated()方法来替代onActivityCreated()onViewCreated()方法在Fragment的视图层次结构被创建后立即调用,通常用于初始化Fragment的UI元素和执行与UI相关的逻辑。在onViewCreated()方法中,你可以安全地进行与视图相关的操作,而无需担心Activity的创建状态。

例如:

    @Overridepublic void onActivityCreated(@Nullable Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);if(getActivity().findViewById(R.id.news_context_layout) !=null){isTwoPane = true; //双页模式}else{isTwoPane = false; //单页模式}}

替换为;

@Override
public void onViewStateRestored(@Nullable Bundle savedInstanceState) {super.onViewStateRestored(savedInstanceState);if(getActivity().findViewById(R.id.news_context_layout) !=null){isTwoPane = true; //双页模式}else{isTwoPane = false; //单页模式}
}

四、requireActivity在Fragment中与之关联的 Activity

requireActivity()

  • 这是 Fragment 中的一个方法,用于获取与当前 Fragment 关联的 Activity 实例。
  • 在 Fragment 中,可以通过 requireActivity() 方法来获取与之关联的 Activity,而无需担心 Activity 是否为 null。这个方法会确保在 Fragment 的生命周期内获取有效的 Activity 实例。
NewsContentFragment newsContentFragment = (NewsContentFragment) requireActivity().getSupportFragmentManager().findFragmentById(R.id.news_context_fragment);

五、设置输入框光标位置setSelection

str = "123"
editText.setSelection(str.lenth());

editText.setSelection(str.length());: 这将设置文本输入框中的光标位置。在这里,光标将被放置在文本的末尾,即最后一个字符之后。

六、修改图片大小

1、设置属性android:scaleType

android:scaleType值的意义区别:

  • CENTERcenter: 图片大小不变,居中显示,当图片长/宽超过View的长/宽,截取图片居中部分显示。
  • CENTER_CROPcenterCrop: 按比例扩大图片的size居中显示,使得图片长(宽)大于等于View的长(宽)。
  • CENTER_INSIDEcenterInside: 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽。
  • FIT_CENTERfitCenter: 按比例缩放图片到视图的最小边,居中显示。
  • FIT_ENDfitEnd: 按比例缩放图片到视图的最小边,显示在视图的下部分位置。
  • FIT_STARTfitStart: 把图片按比例缩放到视图的最小边,显示在视图的上部分位置。
  • FIT_XYfitXY: 把图片不按比例缩放到View的大小显示。
  • MATRIXmatrix: 用矩阵来绘制。

五、限制或者指定输入内容

android:inputType是一个用于控制EditText输入类型的属性。它定义了用户在EditText中可以输入的内容类型,以及输入时的键盘布局和行为。android:inputType的值可以是一个或多个常量的组合,用逗号分隔。

除了"text"之外,还有其他一些可能的android:inputType值,用于限制输入的内容类型,例如:

  • textPassword: 输入密码,文本将被遮蔽以保护隐私。
  • number: 输入数字。
  • phone: 输入电话号码。
  • emailAddress: 输入电子邮件地址。
  • date: 输入日期。
  • 等等…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/120535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MacOS Mojave(苹果14系统) v10.14.6中文离线安装包

MacOS Mojave是一款先进的操作系统&#xff0c;它拥有诸多出色的特性。其中&#xff0c;夜间模式可以根据时间或用户设置自动切换&#xff0c;改变了UI、壁纸和窗口的样式&#xff0c;使界面在夜晚使用时更为舒适。另外&#xff0c;新的堆栈和群组功能让用户能更方便地分类和整…

7 IT Career Paths and How to Get Started in 2023

文章目录 7 IT Career Paths and How to Get Started in 2023IT career paths1. Computer support2. Cybersecurity3. Networks and systems4. Software development5. Web development6. Data7. Cloud computing 7 IT Career Paths and How to Get Started in 2023 Working i…

Tomcat的日志接收文件catalina.out nohup.out说明

catalina.out用于接收如下情况的日志&#xff1a; catalina.out其实是tomcat的标准输出(stdout)和标准出错(stderr)&#xff0c;这是在tomcat的启动脚本里指定的&#xff0c;如果没有修改的话stdout和stderr会重定向到这里。所以我们在应用里使用System.out打印的东西都会到这…

软考系统架构师知识点集锦四:信息安全技术基础知识

一、考情分析 二、考点精讲 2.1信息加解密技术 2.1.1对称加密 概念:对称加密(又称为私人密钥加密/共享密钥加密) : 加密与解密使用同一密钥。特点:加密强度不高&#xff0c;但效率高;密钥分发困难。 (大量明文为了保证加密效率一般使用对称加密) 常见对称密钥加密算法:DES:…

建站必须了解的黑科技:AB站投放、clock斗篷

想了解做独立站&#xff0c;但是又不知道做什么产品好&#xff0c;有不少商家抓住了黑五、FP产品这个机会&#xff0c;想把握这种高利润高回报的产品&#xff0c;了解整个独立站建站流程后&#xff0c;不应该单单只是冲动建站&#xff0c;还必须了解之后可能遇到的问题。 你可…

PaddleX场景实战:PP-TS在电压预测场景上的应用

时间序列是按照时间发生的先后顺序进行排列的数据点序列&#xff0c;简称时序。时间序列预测即运用历史的多维数据进行统计分析&#xff0c;推测出事物未来的发展趋势。时间序列预测是最常见的时序问题之一&#xff0c;在很多行业都有其应用&#xff0c;且通常时序预测效果对业…

音视频编解码技术学习笔记

音视频编解码技术是音视频处理领域的重要部分&#xff0c;涉及到对原始音视频数据的压缩、编码和解码。以下是音视频编解码技术的一些要点和难点&#xff1a; 要点&#xff1a; 压缩技术 音视频编解码的核心是对原始音视频数据进行压缩&#xff0c;以减小文件大小和传输带宽…

高防回源ip被源站拦截怎么办

​  在进行网站运营过程中&#xff0c;我们经常会遇到DDoS攻击等网络安全威胁。为了保护网站的正常运行&#xff0c;很多企业选择使用高防服务来应对这些攻击。有时候我们可能会遇到一个问题&#xff0c;就是高防回源IP被源站拦截的情况。 那么&#xff0c;当我们发现高防回源…

Vue(uniapp)父组件方法和子组件方法执行优先顺序

涉及到的知识点&#xff1a;watch监控&#xff1a;先看问题&#xff0c;父组件从后端通过$ajax获取数据&#xff0c;在将父组件将值传输给子组件&#xff0c;使用子组件使用created钩子函数获取数据&#xff0c;按自己的想法应该是父组件先获取后端数据&#xff0c;在传入给子组…

【机器学习合集】标准化与池化合集 ->(个人学习记录笔记)

文章目录 标准化与池化1. 标准化/归一化1.1 归一化归一化的作用 1.2 标准化批标准化方法 Batch Normailzation标准化方法的对比自动学习标准化方法 2. 池化2.1 池化的作用2.2 常见的池化方法2.3 池化方法的差异2.4 池化的必要性 标准化与池化 1. 标准化/归一化 1.1 归一化 归…

使用pycharm远程调试

使用pycharm 专业版&#xff0c; 在设置解释器中&#xff0c;具备ssh 解释器功能&#xff1b; 一般在本地无法调试远程端代码&#xff0c;机械性的scp传输文件十分影响工作效率&#xff0c;PyCharm的Pro支持远程Run&#xff0c;Debug&#xff0c;等可视化的功能。 操作系统&…

Git总结

Git介绍 一、Git常用命令 添加、提交 git add 将文件从工作区添加到暂存区&#xff0c;表示git开始追踪文件&#xff0c;如果不想让git追踪了&#xff0c;可以使用 git rm --cached <file> 取消文件追踪&#xff0c;仅仅只代表追踪取消&#xff0c;工作区文件还是照…

4.1 数据库安全性概述

思维导图&#xff1a; 前言&#xff1a; - **第一章回顾**&#xff1a;数据库特点 - 统一的数据保护功能&#xff0c;确保数据安全、可靠、正确有效。 - 数据保护主要涵盖&#xff1a; 1. **数据的安全性**&#xff08;本章焦点&#xff09; 2. 数据的完整性&#xff08;第…

pc与android设备进行通信

首先&#xff1a;根据此博客 Android模拟器调试TCP通讯_.emulator_console_auth_token-CSDN博客 思考&#xff1a; 只在本机电脑中&#xff1a; 服务器IP地址设为为0.0.0.0&#xff0c;并开始监听&#xff0c;客户端IP地址127.0.0.1&#xff0c;192.168.1.114都可连接。 12…

如何将数据库某列的值(如日期)作为表格的列名

如何将数据库某列的值&#xff08;如日期&#xff09;作为表格的列名 需求&#xff1a;前端需要展示如下的二维表格&#xff0c;其中表格的日期是数据库表里data的值&#xff0c;每行不同的值是表格里的字段值&#xff0c;也就是需要将表里的数据行转列&#xff0c;列转行&…

vue手动拖入和导入excel模版

1.列表按钮 <el-button click“importExcel(scope.row.id)” size“small” type“text”>导入excel模版 2.按钮弹框 3.data定义数据 data () { return { projectId: ‘’, importDialogVisible: false, fileList: [], //手动上传 upload_file: ‘’, //导入excel模版…

设计模式思维导图

ProcessOn思维导图链接

性能测试工具:如何学习JMeter?

JMeter是一个广泛应用于Web应用程序性能测试与负载测试的开源负载测试工具&#xff0c;学习JMeter则可以协助软件测试工程师更好地进行自动化性能测试与负载测试&#xff0c;本文就来介绍下如何学习JMeter。 1. 应用场景 (1) Web应用程序、数据库服务器、FTP服务器、SOAP和RE…

移动应用买量越来越难,APP增长的新机遇在哪里?

近两年来&#xff0c;“买量越来越难”是移动互联网每逢年末的固定趋势&#xff0c;“内卷”对于每一个互联网运营人来说成为了越来越普遍的存在。 比如在游戏买量领域&#xff0c;一家厂商做出一个素材之后&#xff0c;很多家都会陆续跟进。其次&#xff0c;素材的生命周期下…

[USACO2012-Mar-Silver] Flowerpot 题解(单调队列 c++)

[USACO12MAR] Flowerpot S题解(单调队列 c) 题目链接&#xff1a;[USACO2012-Mar-Silver] Flowerpot 题意&#xff1a; 给你n个点&#xff0c;每个点有对应的x,y确认是否存在两个点&#xff0c;在 y 1 , y 2 y_1,y_2 y1​,y2​满足要求的情况下&#xff0c;输出最小的 ∣ x …