1. TextView
1.1 属性说明
//部分布局属性(继承View)
layout_width:控件宽度。
layout_height:控件高度。
android:gravity:内部对齐方式:左对齐,右对齐,居中对齐,顶部对齐,底部对齐。
//在LinearLayout里面使用
android:layout_gravity:外部对齐方式:左对齐,右对齐,居中对齐,顶部对齐,底部对齐。
//文本样式
android:lineSpacingExtra:文本行间距
android:text:设置显示的文本。
android:textSize:设置文本大小。
android:textColor:设置文本的颜色。
android:textStyle:设置文本样式,文字斜体、加粗("normal|italic|bold"),或者通过xml文件同时设置多个textView的属性,复用样式。
android:typeface:设置文本的字体,monospace:等宽字体,sans:无衬线字体,serif:衬线,normal:普通字体。
android:fontFamily:字体组合,里面有多个字体,可搭配字体权重,引用的是xml文件,例如 android:fontFamily="@font/myfont",文件新建在"res->font"中。
android:textFontWeight:设置使用的字体的权重,权重高使用谁,和android:fontFamily一起使用。
android:hint:文本在文本空时提示文本。
android:textColorHint:设置android:hint属性文本的颜色。
android:shadowColor:设置所有文本阴影的颜色,shadowColor、shadowDx、shadowDy、shadowRadius同时使用实现立体文字效果。
android:shadowDx:设置所有文本 x 轴即水平偏移,右为正,左为负,shadowColor、shadowDx、shadowDy、shadowRadius同时使用实现立体文字效果。
android:shadowDy:设置所有文本y轴即垂直偏移,下为正,上为负,shadowColor、shadowDx、shadowDy、shadowRadius同时使用实现立体文字效果。
android:shadowRadius:设置所有文本阴影的半径,shadowColor、shadowDx、shadowDy、shadowRadius同时使用实现立体文字效果,味道极佳。
android:textScaleX:设置文本的水平缩放程度,大于1,x方向拉长加粗,小于1,x方向缩短变细。
android:textColorHighlight:设置点击后文本的背景色,比如 android:autoLink="web" 为超链接的时候,点击后背景色会展示 android:textColorHighlight 设置的颜色。
android:textColorLink:设置文本是链接类型的颜色,和android:autoLink="web"联合使用。
//图片和文字共用
android:drawableBottom:TextView底部出现一张图片,设置图片地址。
android:drawableEnd:TextView右侧出现一张图片。
android:drawableRight:TextView右侧出现一张图片。
android:drawableLeft:TextView左侧出现一张图片。
android:drawableStart:TextView左侧出现一张图片。
android:drawableTop:TextView上部出现一张图片。
android:drawablePadding:设置text与drawable(图片等)的间隔,一般都与drawableLeft、drawableStart 、drawableEnd 、drawableRight、drawableTop、drawableBottom一起使用。
//控制输入文本(EditView时弹出的软键盘也会不同)
android:inputType:设置文本的数据类型,如果包含非该类型的文本则不显示
"none":输入普通字符
"text":输入普通字符
"textCapCharacters":输入普通字符
"textCapWords":单词首字母大小
"textCapSentences":仅第一个字母大写
"textMultiLine":多行输入
"textNoSuggestions":不提示
"textUri":URI格式
"textEmailAddress":电子邮件地址格式
"textEmailSubject":邮件主题格式
"textShortMessage":短消息格式
"textLongMessage":长消息格式
"textPersonName":人名格式
"textPostalAddress":邮政格式
"textPassword":密码格式
"textVisiblePassword":密码可见格式
"textWebEditText":作为网页表单的文本格式
"textFilter":文本筛选格式
"textPhonetic":拼音输入格式
"number":数字格式(不能输入小数点)
"numberSigned":有符号数字格式
"numberDecimal":可以带小数点的浮点格式(可输入小数点)
"phone":拨号键盘
"datetime":日期+时间格式
"date":日期键盘
"time":时间键盘
//控制文本显示(EditView时控制输入)
android:lines:设置文本多少行,当长度超出该值时,超出文本部分不显示,和android:minLines属性类似。
android:maxLines:设置文本最大多少行,当文本达到改行数还没显示完,超出部分不显示,和android:lines属性类似。
android:maxLength:控制文本最多显示/输入多少个字符。
android:minLines:限制文本最低多少行显示。
android:singleLine:布尔类型,表示是否单行显示,已经废弃,建议用android:lines。
android:ellipsize:设置省略号("start":省略号显示在开头、"end":省略号显示在结尾、"middle":省略号显示在中间、"marquee" :以 “跑马灯” 的方式显示,动画横向移动),如果 TextView 的 layout_width 和 layout_height 是指定了像素的固定宽高,该属性会直接生效,如果宽高是"wrap_content"类型的,则需要同时结合"android:maxLines"和"android:maxEms"属性才可生效。
android:ems:代表的是字符M的宽度,注意不同的设备M的宽度不同,假设设置为6,则可显示文本的长度为6个M的长度。
android:maxEms:设置显示最多ems宽。
android:minEms:设置显示最小ems宽。
//其他
android:textCursorDrawable:设置光标颜色,应用在EditText输入框View中,自定义的drawable文件。
android:autoLink:指定连接形式文字,可以是("web":匹配网页模式,点击跳转浏览器应用打开网页、"all":匹配所有模式(相当于网络/电子邮件/电话/图)、"email":匹配电子邮件地址,点击后自动跳转邮箱相关的应用、"phone":匹配电子邮件地,点击后自动跳转拨号页面、"none":默认值,什么也没有)。
android:enabled:设置控件针对点击事件是否启用,每个view都有,设置为true则点击事件无响应。
2. EditText
2.1 声明方式
<EditText
android:id="@+id/et_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:text="@string/edittext_test"/>
3. ImageView
3.1 常见属性
android:background:设置背景颜色
android:src:设置显示的Drawable对象的引用
android:padding:设置间距(图片和框的间距)
android:maxWidth:ImageView的最大宽度。
android:maxHeight:ImageView的最大高度。
android:adjustViewBounds:用于调整ImageView的边界,使得ImageView和图片有一样的长宽比例,
通常配合maxWidth、maxHeight一起使用
android:scaleType:设置图片的缩放类型
center:把图片放在ImageView的中间位置,但是不进行任何缩放。
centerCrop:保持纵横比缩放图片,以使图片能完全覆盖ImageView。
centerInside:保持纵横比缩放图片,以使得ImageView能完全显示该图片。
fitXY:横向、纵向独立缩放,以适应该ImageView控件。
fitStart:保持纵横比缩放图片,并且将图片放在ImageView的左上角。
fitCenter:保持纵横比缩放图片,缩放完成后将图片放在ImageView的中央。
fitEnd:保持纵横比缩放图片,缩放完成后将图片放在ImageView的右下角。
matrix:使用matrix方式进行缩放
3.2 ImageView几种图片的加载方法
- 在布局文件中设置属性app:src加载本地图片
<ImageView
android:id="@+id/image_trophy"
android:layout_width="match_parent"
android:layout_height="50dp"
android:src="@drawable/trophy"/>
-
setImageBitmap(Bitmap):加载Bitmap- 在布局文件中,创建一个ImageView
<ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="50dp" android:padding="5dp" android:background="@color/red" app:layout_constraintTop_toBottomOf="@+id/image_trophy" />- 建立工具类
public class DrawableUtils { public static void useBitmap(Context context, ImageView imageView, int drawableId){ Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), drawableId); imageView.setImageBitmap(bitmap); } }- 调用加载图片
ImageView image = findViewById(R.id.image); DrawableUtils.useBitmap(this, image, R.drawable.heart); -
setImageResource(int resId):加载drawable文件夹中的资源文件ImageView image = findViewById(R.id.image); image.setImageResource(R.drawable.heart); -
setImageURI(Uri):加载手机中的图片文件。ImageView image = findViewById(R.id.image); Uri imageUri = Uri.parse("file:///path/to/your/image.jpg"); // 注意:路径需要根据实际情况填写 image.setImageURI(imageUri); -
setImageDrawable(Drawable):加载 DrawableImageView image = findViewById(R.id.image); Drawable drawable = getDrawable(R.drawable.heart); image.setImageDrawable(drawable);
3.3 ImageView缩放类型
ImageView的android:scaleType属性用于设置图片的缩放类型,共有如下8种缩放类型。
| android:scaleType="centerInside" |
图片按比例缩小或保持原来尺寸,显示在ImageView中央 |
|
| fitStart | 图片按比例放大或缩小到ImageView的宽度或高度,显示在ImageView的左上角,图片会完整显示。 |
|
| fitEnd | 图片按比例放大或缩小到ImageView的宽度或高度,显示在ImageView的右下角,图片会完整显示。 | |
| center | 按照图片的原始大小显示在ImageView的中央,若图片尺寸大于ImageView宽高,则只显示部分,图片不会进行缩放 |
|
| fitXY | 将图片拉伸至填充整个ImageView,不按比例缩放 |
|
| fitCenter |
默认使用这种模式。按比例放大或缩小图片至ImageView的宽高,然后居中显示。 |
|
| centerCrop | 图片等比例缩放至完全填充整个ImageView,居中显示,并将放大后的多余部分裁剪掉 |
|
| matrix | 经过变换的图片显示在ImageView的左上角,若缩放后的图片尺寸大于ImageView宽高,则只显示部分。该模式需要与ImageView.setImageMatrix(Matrix matrix)配合使用 |
注意:fitCenter和centerInside的区别
fitXX开头的都是填充视图的意思。当视图View的大小比图片小时,两者使用的效果是一样; 而当视图View的大小比图片大时,fitCenter会保持原图比例放大图片去填充View,而centerInside会保持原图大小。
4. shapeableImageView
4.1 常用类型
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--圆角-->
<style name="roundedCornerStyle">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">8dp</item>
</style>
<!--圆形-->
<style name="circleStyle">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">50%</item>
</style>
<!--切角-->
<style name="cutCornerStyle">
<item name="cornerFamily">cut</item>
<item name="cornerSize">12dp</item>
</style>
<!-- 菱形图片 -->
<style name="diamondStyle">
<item name="cornerFamily">cut</item>
<item name="cornerSize">50%</item>
</style>
<!-- 右上角圆角图片 -->
<style name="topRightCornerStyle">
<item name="cornerFamilyTopRight">rounded</item>
<item name="cornerSizeTopRight">50dp</item>
</style>
<!-- 小鸡蛋图片 -->
<style name="eggStyle">
<item name="cornerFamilyTopRight">rounded</item>
<item name="cornerSizeTopRight">50dp</item>
<item name="cornerSizeTopLeft">50dp</item>
<item name="cornerFamilyTopLeft">rounded</item>
</style>
<!-- 组合弧度图片效果 -->
<style name="comCornerStyle">
<item name="cornerFamily">rounded</item>
<item name="cornerSizeTopRight">50%</item>
<item name="cornerSizeBottomLeft">50%</item>
</style>
<!-- 小 Tips -->
<style name="tipsCornerStyle">
<item name="cornerFamilyTopLeft">rounded</item>
<item name="cornerSizeTopLeft">50%</item>
<item name="cornerFamilyBottomLeft">rounded</item>
<item name="cornerSizeBottomLeft">50%</item>
<item name="cornerFamilyTopRight">cut</item>
<item name="cornerSizeTopRight">50%</item>
<item name="cornerFamilyBottomRight">cut</item>
<item name="cornerSizeBottomRight">50%</item>
</style>
<!-- 扇形 -->
<style name="fanStyle">
<item name="cornerFamilyBottomLeft">rounded</item>
<item name="cornerFamilyBottomRight">rounded</item>
<item name="cornerFamilyTopLeft">rounded</item>
<item name="cornerFamilyTopRight">rounded</item>
<item name="cornerSizeBottomLeft">0dp</item>
<item name="cornerSizeBottomRight">0dp</item>
<item name="cornerSizeTopLeft">0%</item>
<item name="cornerSizeTopRight">100%</item>
</style>
</resources>
4.2 在布局文件中使用
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/shape_image_eggStyle"
android:layout_width="100dp"
android:layout_height="100dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/shape_image_topRightCorner"
android:src="@drawable/heart"
android:scaleType="centerInside"
android:background="@color/green"
app:shapeAppearanceOverlay="@style/eggStyle"/>
5. Button
5.1 属性
按钮控件Button由TextView派生而来,所以TextView拥有的属性和方法,Button均能使用。不同点如下:
| TextView | Button | |
|---|---|---|
| 默认的按钮背景 | × | √ |
| 内部文本对齐方式 | 靠左 | 居中 |
| textAllCaps属性(是否将英文字母转为大写) | × | √ |
| onClick属性(指定了点击按钮时要触发哪个方法) | × | √ |
5.2 点击和长按事件监听
//点击
findViewById(R.id.btn_click).setOnClickListener(this);
//长按
findViewById(R.id.btn_long_click).setOnLongClickListener(this);
@Override
public void onClick(View view) {
...
}
@Override
public boolean onLongClick(View view) {
...
return false;
}