当前位置:   article > 正文

Android 设置Padding和Margin(动态/静态)_android margin

android margin

一、什么是padding,什么是margin?

在Android界面开发时,为了布局更加合理好看,很多时候会用上Padding和Margin,

padding和margin是什么呢?即内边距和外边距

某个View指定为padding是针对该View里面的子View距离该View距离而言的,或者是里面的内容距离容器的距离。

某个View指定为margin是针对该View本身距离别人或者父View而言的。

例如下图,输入框里面的文字内容,如果不设置内边距,那么就会紧挨左上角,这样看起来,就很不友好,合理的设置padding看起来会舒服很多。

如果,不设置外边距,会充满整个父布局,也不好看,这时候就需要margin属性(外边距)。

 类似于控件的基础属性,并且不会变化的,我们一般会直接在xml文件里直接设置,这是上图的布局代码

  1. <androidx.appcompat.widget.AppCompatEditText
  2. android:id="@+id/chat_input_edit"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:layout_marginStart="10dp"
  6. android:layout_marginTop="10dp"
  7. android:layout_marginEnd="10dp"
  8. android:layout_marginBottom="10dp"
  9. android:paddingHorizontal="12dp"
  10. android:paddingVertical="10dp"
  11. android:textColor="@color/white"
  12. android:textColorHint="#94ffffff"
  13. android:textSize="14sp" />

 二、动态设置边距

那么怎么动态设置padding和margin呢?其实也很简单。

1.设置padding

view.setPadding(int left, int top, int right, int bottom)//view为你要设置的控件

例子:在我点击搜索框后,搜索框获取焦点,准备输入内容的时候,图标消失,文本内边距修改,实现代码如下

  1. editText.setOnFocusChangeListener { view, b ->
  2. if (b) {//使用dp2px方法进行屏幕适配
  3. view.setPadding(DPUtils.dp2px(12f),DPUtils.dp2px(6f),DPUtils.dp2px(12f),DPUtils.dp2px(6f))
  4. searchIcon.visibility = View.GONE
  5. }
  6. }

实现效果:最开始文本里左边内边距32dp,点击后变成12dp

  1. //这是dp转为px的方法
  2. private fun dp2px(i: Int): Int {
  3. return (Resources.getSystem().displayMetrics.density * i + 0.5f).toInt()} 

为什么会有dp2px这个方法来转一下呢?

android中px与sp,dp之间的转换_跑快点的博客-CSDN博客_android px sp由于Android手机厂商很多,导致了不同设备屏幕大小和分辨率都不一样,然而我们开发者要保持在不同设备上显示同样的视觉效果,就需要做一些适配效果。 相关名词解释 屏幕大小:通常指的是屏幕对角线的长度,使用“寸”为单位来衡量。 分辨率:指手机屏幕的像素点个数,例如:720*1280,指的是宽有720个像素点,高有1280个像素点。 dpi:指的是每英寸像素,是由对角线上的像素点数除以屏幕大小所https://blog.csdn.net/qidingquan/article/details/53714603?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4-53714603-blog-91974773.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4-53714603-blog-91974773.pc_relevant_default&utm_relevant_index=92.动态设置margin

android的view中有setPadding,但是没有直接的setMargin方法。如果要在代码中设置该怎么做呢?可以通过设置view里面的 LayoutParams 设置,而这个LayoutParams是根据该view在不同的GroupView而不同的。这儿用的是RelativeLayout是因为在他的父布局是RelativeLayout哦,用成其他的会报错哦~~

  1. val lp = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT)
  2. lp.setMargins(0, 0, DPUtils.dp2px(7f), DPUtils.dp2px(7f))
  3. //RelativeLayout可以通过LayoutParams的addRule来添加约束,其他的布局也有类似的一些方法
  4. lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)
  5. lp.addRule(RelativeLayout.ALIGN_PARENT_END)
  6. textView.layoutParams = lp

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/270443
推荐阅读
相关标签
  

闽ICP备14008679号