Android(安卓)TextView等控件不为人知的秘密

一、TextView

Button是继承TextView,TextView有的,同样Button也有以下特点:

1、空格占位法

== 普通的英文半角空格

  == ==   (普通的英文半角空格但不换行)

  == 中文全角空格 (一个中文宽度)

== == en空格 (半个中文宽度)

== == em空格 (一个中文宽度)

== 四分之一em空格 (四分之一中文宽度)

举个空格例子:

  • 在布局中
<LinearLayout    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/white"    android:orientation="vertical">    <TextView      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:text="姓 名" />    <TextView      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:text="身份证" />LinearLayout>
  • 在代码中
setText("姓` `名");setText("身份证");

2、首行缩进

  • 在布局中,在文字的前面加入”\u3000\u3000”

  • 在代码中,使用setText(“\u3000\u3000”+xxxxx);

3、设置文字 + 图片

这里举文字左边有图片的例子(其他三个方向也同理):

  • 在布局中
android:drawableLeft="@mipmap/icon_praise"android:drawablePadding="5dip"
  • 在代码中
TextView tv = ...;tv.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.icon_praise, 0, 0, 0);tv.setCompoundDrawablePadding(5);

4、设置字形

android:textStyle:设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开

这里举例设置粗体:

  • 在布局中
 android:textStyle="bold"
  • 在代码中
TextView tv = ...;TextPaint tp = tv.getPaint();tp.setFakeBoldText(true);

5、使用&符号

提示unescaped & or nonterminated character/entity reference,

情景:在使用databinding布局中用到表达式时出现的问题,同样其他也适用。

原因:IDEA将“&”当成了特殊符号。

解决方法:将“&”改写为 &

二、Button

1、设置padding无效

设置水平padding的话,minWidth=0才有效
设置垂直padding的话,minHeight=0才有效

如下代码:

android:minHeight="0dp"android:minWidth="0dp"

后续更新。。。