-
控件
文本控件 TextView
常用属
-
1讲解
TextView作为Android最基础也是最常用的组件之一,他承担着文本的显示重任。要注意,其显示的文本内容是无法在界面直接被用户修改的。不过作为程序员,可以通过后台代码去修改TextView的内容和各项属性。另外要注意的是,TextView控件是需要放在容器里面的,比如LinearLayout容器(一般控件都要放在容器里面)。基础属性介绍
资源文件的使用
在drawable文件夹中创建一个xml文件
在控件的background属性上进行设置
-
带图片的TextView
文本输入控件 EditText
常用属性
hint
inputType
焦点的获取
ImageView 图像视图控件
常用属性:
ImageView也就是图像视图,用于在屏幕中显示任何的Drawable对象,通常用来显示图片。有如下属性:
android:adjustViewBounds:
用于设置ImageView是否调整自己的边界来保持所显示图片的长宽比。
android:maxHeight:
设置ImageView的最大高度,需要设置android:adjustViewBounds属性值为true,否则不起作用。
android:maxWidth:
设置ImageView的最大宽度,需要设置android:adjustViewBounds属性值为true,否则不起作用。
android:scaleType:
(1)matrix(ImageView.ScaleType.MATRIX):使用matrix方式进行缩放
(2)fitXY(ImageView.ScaleType.FIT_XY):对图片横向、纵向独立缩放,使得该图片完全适应该ImageView,图片的纵横比可能会改变
(3)fitStart(ImageView.ScaleType.FIT_START):保持纵横比缩放图片,直到该图片能完全显示在ImageView中,缩放完成后将该图片放在ImageView的左上角
(4)fitCenter(ImageView.ScaleType.FIT_CENTER):保持纵横比缩放图片,直到该图片能完全显示在ImageView中,缩放完成后将图片放在ImageView的中央
(5)fitEnd(ImageView.ScaleType.FIT_END):保持纵横比缩放图片,直到该图片能完全显示在ImageView中,缩放完成后将该图片放在ImageView的右下角
(6)center(ImageView.ScaleType.CENTER):把图片放在ImageView的中间,但不进行任何缩放
(7)centerCrop(ImageView.ScaleType.CENTER_CROP):保持纵横比缩放图片,以使得图片能完全覆盖ImageView
(8)centerInside(ImageView.ScaleType.CENTER_INSIDE):保持纵横比缩放图片,以使得ImageView能完全显示该图片。
android:src:
用于设置ImageView所显示的Drawable对象的ID,例如,设置显示保存在res/drawable目录下的名称为flower.jpg的图片,可以将属性值设置为android:src="@drawable/flower"。
android:tint:
用于为图片着色,其属性值可以是“#rgb”、“#argb”、“#rrggbb”或“#aarrggbb”表示的颜色值。
src->srcCompat 设置图片资源
scaleType
fitXY
理解 src和background
alpha 设置图片的透明度的
alpha取值范围是多少? (0-1),值越小越透明
Button 按钮
继承TextView
常用属性
text
background 如果设置颜色是不生效的
如何想要设置颜色生效
修改values->themes->themes.xml文件中的 style parent 后加上.Bridge
想要给一个按钮设置多个背景图,在不同的操作下显示不同的背景图?
需要使用StateListDrawable
StateListDrawable
根据不同的状态,给background不同的值
如何创建?
右键drawable ->new->Drawable Resource File
注意点:drawable中不可以直接写rgb色,需要从color文件中引用
Button按钮的点击事件
-
需要在xml文件中,给要设置点击事件的按钮,设置上id
btn_XXX, 比如登录按钮 btn_login
-
需要在Java文件中给按钮设置点击事件
-
第一步 需要获取到页面上的按钮 2. 第二步 给获取到的按钮设置点击事件 3. 第三步 触发监听
-
代码案列如下:
package com.hp.demo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
/**
* 按钮的点击事件
*
* 需求1: 按钮的点击事件
* 当用户进入登录页面
* 输入账号、密码
* 点击登录按钮
*
* 需求2:TextView的点击事件
* 当新用户注册时,用户需要点击进入注册页面
*/
public class MainActivity extends AppCompatActivity {
//========================================第一种点击事件案例
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
//
// // 第一步: 获取页面上的控件(如何此步不写,会报什么错? 空指针异常)
// // 如何获取页面的控件 findViewById()
// // R.id.btn_login 表示的页面上按钮的id
// Button btn_login = findViewById(R.id.btn_login);
//
// // 第二步: 给获取到的控件 设置监听
// // 第三步: 处理监听,一旦发现有人点击按钮,要怎么操作
// btn_login.setOnClickListener(btn_click);
//
// }
//
// // 方式一: 内部类
// private View.OnClickListener btn_click = new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// // 后台提示 给谁用? 给开发人用
// Log.i("btn点击事件","btn_login按钮被点击");
//
// // 前台提示 给谁用? 给用户用
// // Toast.makeText(参数1,参数2,参数3)
// // 参数1 : 上下文
// // 参数2 : 要给用户提示的内容,而且内容必须是字符串, 如果说是数字,如何操作? 2+""
// // 参数3 : 提示框显示时长
// Toast.makeText(MainActivity.this, "功能尚未完成,正在开发中", Toast.LENGTH_SHORT).show();
// }
// };
//=========================================第二种点击事件的案例 匿名内部类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 第一步: 获取页面上的控件(如何此步不写,会报什么错? 空指针异常)
// 如何获取页面的控件 findViewById()
// R.id.btn_login 表示的页面上按钮的id
Button btn_login =findViewById(R.id.btn_login);
// 第二步: 给获取到的控件 设置监听
// 第三步: 处理监听,一旦发现有人点击按钮,要怎么操作
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("btn点击事件2", "btn_login再次被点击");
Toast.makeText(MainActivity.this,"功能尚未完成,正在开发中2",Toast.LENGTH_LONG).show();
}
});
}
}
总结
1. Button按钮的点击事件
1. 内部类
单个按钮,代码量较多的时候
2. 匿名内部类
单个按钮,并且代码量较少的时候
3. 实现onClickListener接口
多个按钮
2.提示
//在控制台输出,在android中依然是可用的,但是不建议使用
System.out.println("hello world");
后台提示,主要是给开发人员使用
// 第一个参数 需要填写字符串 标签
// 第二个参数 需要填写字符串 输出内容
Log.i("登录操作","登录成功");
前台提示,主要是给用户使用
Toast.makeText(MainActivity.this, "登录登录", Toast.LENGTH_SHORT).show();
3.单选框 RadioButton
单选框的独立存在: 主要用在同意协议等
单选框一般情况下都是多个出现:比如性别,必须跟RadioGroup结合使用
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
orientation="vertical">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="男"></RadioButton>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"></RadioButton>
</RadioGroup>
单选框的点击事件(点击事件用在什么地方?)
// 单选框的点击事件是设置在RadioGroup上
onCheckedChangeListener()
4.复选框 CheckBox
复选框的独立使用:主要用于 同意协议
复选框的多个使用:多选
复选框的点击事件:
// 复选框的点击事件是设置在checkbox上
onCheckedChangeListener()
5.综合使用
如何取值 getText().toString();