一、layout_margin和padding
android:layout_margin=“10dp”,android:padding="10dp"区别
-
android:layout_margin="10dp"
:- 适用对象:用于调整 View 与其父容器或相邻 View 之间的距离,即外边距(margin)。
- 效果:设置该属性后,View 与其父容器或相邻 View 之间会产生一定的间隔,增加 View 之间的距离。
-
android:padding="10dp"
:- 适用对象:用于控制 View 内部内容与 View 边界之间的距离,即内边距(padding)。
- 效果:设置该属性后,View 内部内容(如 TextView 中的文本、ImageView 中的图片等)与 View 边界之间会产生一定的间隔,从而使 View 内部的内容离边界有一定距离。
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:background="@color/blue"> <TextView android: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种:visible
、invisible
和gone
。
visible表示控件是可见的,这个值是默认值,不指定android:visibility时,控件都是可见的。
invisbale 表示控件不可见,但是它仍然占据着原来的位置和大小,可以理解成控件变成透明状态了。
gone 则表示控件不仅不可见,而且不再占用任何屏幕空间。
我们还可以通过代码来设置控件的可见性,使用的是setVisibility()
方法,可以传入View.VISIBLE、View.INVISIBLE和View.G0NE这3种值。
三、android:ellipsize文本的缩略方式
当文本超出控件的宽度时,文本的缩略方式。
android:ellipsize
属性可以设置以下几种值:
-
none
: 默认值,不做省略处理,当文本超过TextView的宽度时,会自动换行显示文本。 -
start
: 在文本的开头处进行省略,保留文本的末尾部分。 -
middle
: 在文本的中间处进行省略,保留文本的开头和末尾部分。 -
end
: 在文本的末尾处进行省略,默认情况下,超过TextView宽度的文本会在末尾处用省略号表示。 -
marquee
: 当文本过长时,使用水平滚动来显示文本,类似于跑马灯效果。需要设置android:singleLine="true"
和android:scrollHorizontally="true"
属性。文本将以水平滚动的方式显示,并且会不断滚动直到文本完全展示或用户将焦点移出TextView。
四、onActivityCreated弃用后的替代方案
谷歌为了管理Fragment
的生命周期,实现了 LifecycleOwner
,暴露了一个Lifecycle
你可以通过getLifecycle()
方法访问的对象 。
因为onActivityCreated()
是宿主Activity的onCreate()
之后立即调用,所以可以在onAttach
的时候,通过订阅Activity
的lifecycle
来获取Activity
的onCreate()
事件,记得要removeObserver
。
现在,官方推荐使用Fragment#onViewCreated()
方法来替代onActivityCreated()
,onViewCreated()
方法在Fragment的视图层次结构被创建后立即调用,通常用于初始化Fragment的UI元素和执行与UI相关的逻辑。在onViewCreated()
方法中,你可以安全地进行与视图相关的操作,而无需担心Activity的创建状态。
例如:
@Override
public 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值的意义区别:
-
CENTER
或center
: 图片大小不变,居中显示,当图片长/宽超过View的长/宽,截取图片居中部分显示。 -
CENTER_CROP
或centerCrop
: 按比例扩大图片的size居中显示,使得图片长(宽)大于等于View的长(宽)。 -
CENTER_INSIDE
或centerInside
: 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽。 -
FIT_CENTER
或fitCenter
: 按比例缩放图片到视图的最小边,居中显示。 -
FIT_END
或fitEnd
: 按比例缩放图片到视图的最小边,显示在视图的下部分位置。 -
FIT_START
或fitStart
: 把图片按比例缩放到视图的最小边,显示在视图的上部分位置。 -
FIT_XY
或fitXY
: 把图片不按比例缩放到View的大小显示。 -
MATRIX
或matrix
: 用矩阵来绘制。
五、限制或者指定输入内容
android:inputType
是一个用于控制EditText输入类型的属性。它定义了用户在EditText中可以输入的内容类型,以及输入时的键盘布局和行为。android:inputType
的值可以是一个或多个常量的组合,用逗号分隔。文章来源:https://www.toymoban.com/news/detail-717941.html
除了"text"之外,还有其他一些可能的android:inputType
值,用于限制输入的内容类型,例如:文章来源地址https://www.toymoban.com/news/detail-717941.html
-
textPassword
: 输入密码,文本将被遮蔽以保护隐私。 -
number
: 输入数字。 -
phone
: 输入电话号码。 -
emailAddress
: 输入电子邮件地址。 -
date
: 输入日期。 - 等等…
到了这里,关于Android开发中关于Ui的语法糖的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!