一.控件TextView
1.基础属性详解
| 1. layout _ width : | 组件的宽度 |
| 2. layout _ height : | 组件的高度 |
| 3.id: | 为 TextView 设置一个组件 id |
| 4. text : | 设置显示的文本内容 |
| 5. textColor : | 设置字体颜色 |
| 6.textStyle: | 设置字体风格,三个可选值: normal (无效果), bold (加粗), italic (斜体) |
| 7. textSize : | 字体大小,单位一般是用 sp |
| 8.background: | 控件的背景颜色,可以理解为填充整个控件的颜色,可以是图片 |
| 9. gravity : | 设置控件中内容的对齐方向, TextView 中是文字, ImageView 中是图片等等。 |
代码实现效果:
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.example.wzyproject.MyTextView
android:id="@+id/tv_one"
android:layout_width="match_parent"
android:layout_height="176dp"
android:text="@string/tv_one"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="30sp"
android:gravity="center_vertical"
android:shadowDx="10.0"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
/>
</LinearLayout>
2带阴影的 TextView
| 1. android : shadowColor : | 设置阴影颜色,需要与 shadowRadius 一起使用 |
| 2. android : shadowRadius : | 设置阴影的模糊程度,设为0.1就变成字体颜色了,建议使用3.0 |
| 3. android : shadowDx : | 设置阴影在水平方向的偏移,就是水平方向阴影开始的横坐标位置 |
| 4.android: shadowDy : | 设置阴影在竖直方向的偏移,就是竖直方向阴影开始的纵坐标位置 |
3.实现跑马灯效果的 TextView
| 1. android : singleLine : | 内容单行显示 |
| 2. android : focusable : | 是否可以获取焦点 |
| 3. android : focusableinTouchMode : | 用于控制视图在触摸模式下是否可以聚焦 |
| 4. android : ellipsize : | 在哪里省略文本 |
| 5. android : marqueeRepeatlimit : | 字幕动画重复的次数 |
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
只是输入以上这些远远不够,以下方法皆可:
3.1设置点击方式
通过
android:clickable="true"
可实现点击后开启跑马灯效果
3.2自定义一个TextView

创建java类,实现构造方法
package com.example.wzyproject;
import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.widget.TextView;
public class MyTextView extends TextView {
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public MyTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean isFocused() {
return true;
}
}
最后还要调用isFocused,此时activity_main.xml中改动

3.3结尾加入requestFocus用来请求焦点

二.butuon控件
1.StateListDrawable
StateListDrawable 是 Drawable 资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点< selector >,我们只需要将 Button 的 background 属性设置为该 drawable 资源即可轻松实现,按下按钮时不同的按钮颜色或背景。
| 1. drawable : | 引用的 Drawable 位图 |
| 2. state _ focused : | 是否获得焦点 |
| 3. state _ pressed : | 控件是否被按下 |
| 4. state _ enabled : | 控件是否可用 |
| 5.state_ selected : | 控件是否被选择,针对有滚轮的情况 |
| 6. state _ checked : | 控件是否被勾选 |
| 7. state _ checkable : | 控件可否被勾选, eg : checkbox |
| 8. state _ window _ focused : | 是否获得窗口焦点 |
| 9. state _ active : | 控件是否处于活动状态, eg : slidingTab |
| 10.state_ single : | 控件包含多个子控件时,确定是否只显示一个子控件 |
| 11.state_ first : | 控件包含多个子控件时,确定第一个子控件是否处于显示状态 |
| 12.state_ middle : | 控件包含多个子控件时,确定中间一个子控件是否处于显示状态 |
| 13.state_ last : | 控件包含多个子控件时,确定最后一个子控件是否处于显示状态 |
<Button
android:text="我是按钮"
android:background="@drawable/btn_selector"
android:layout_width="200dp"
android:layout_height="100dp"
/>
先创建两个照片:

使用backgroundTint可以设置点击前后按钮颜色的变化

在button块中引入
android:backgroundTint="@color/btn_color_selector"
可实现效果如下:


注意:设置前景色会将字体覆盖!
android:foreground="#ff00ff00"
2.button事件处理
private static final String TAG = "led";Button btn = findViewById(R.id.btn);
1.点击事件
//点击事件
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e(TAG, "onClick: " );
}
});
2.长按事件
//长按事件
btn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
Log.e(TAG, "onLongClick: " );
return false;
}
});
3.触摸事件
//触摸事件
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Log.e(TAG, "onTouch: " );
return false;
}
});
触摸事件会有三个模型:ACCTION_DOWN ACCTION_UP ACCTION_MOVE

此时通过event运行后会有

当我们的Ontouch为True时,系统里面会处理onClick和onLongClick两个方法,此时不会在调用了。
相当于一种依赖关系,onlongclick依赖ontouch,onclick依赖onlongclick。
当我们加入时
android:onClick="leoClick"
此时leoClick替换了上述的点击事件onClick,
public void leoClick(View view){
Log.e(TAG, "leoClick: " );
}

点击后效果如上。
文章详细介绍了Android中的TextView控件,包括基础属性如width、height、text、textColor等,并展示了如何创建带阴影和跑马灯效果的TextView。同时,文章也探讨了Button的StateListDrawable特性,用于根据状态改变按钮的图像效果,并列举了不同状态的关键字。此外,还讲解了Button的事件处理,包括点击、长按和触摸事件的监听方法。


2335

被折叠的 条评论
为什么被折叠?



