Android基础学习(二)—— 常用控件

TextView 显示文本内容
Button 按钮
EditText 输入框
ImageView 显示图片
ProgressBar 进度条
ToolBar 自定义标题栏
AlertDialog 对话框
PopupWindow 弹出框

一、TextView 控件

作用:显示文本内容

注意

1、控件需要放置到容器中,如 LinearLayout 容器

2、在 xml 文件中添加 TextView 时,TextView 的属性(以 android:layout_width为例)可在 attrs.xml 文件(“ctrl+左键” 点击 layout_width 可跳转到 attrs.xml 文件)中查看其提前预置的可选值有哪些,layout_width的可选值:

(1)match_parent

android:layout_width="match_parent"

TextView 的宽度取的是其容器(这里是 LinearLayout) 的总宽度

(2)wrap_content

android:layout_width="wrap_content"

根据 TextView 中的内容自动分配宽度,此宽度不能超过容器
也可以给属性自定义数值,如:

android:layout_width="200dp"

3、textSize属性,设置字体大小,单位一般是 sp

dp、sp等都是 android 为了屏幕自适配而设置的单位

4、gravity 属性,设置控件的内容放置的位置

5、在正规开发中,TextView控件中的 android:text 属性,将其指向 values/strings.xml 中的内容;android:textColor 属性,将其指向 values/colors.xml 中的内容。这样做是为了方便适配,比如国际化适配中,只将 values/strings.xml 中的内容汉译英即可。

6、带阴影的 TextView

用到下述四种属性:

android:shadowColor   //设置阴影颜色,需要与shadowRadius一起使用
android:shadowRadius   //模糊度,0.1就变成字体颜色了,建议3.0
android:shdowDx   //设置阴影在水平方向的偏移,即水平方向阴影开始的横坐标位置
android:shdowDy   //设置阴影在竖直方向的偏移,即竖直方向阴影开始的纵坐标位置

7、实现跑马灯效果的 TextView

用到下述五种属性:

android:singleLine  //内容单行显示,使内容太长而自动换行的文字单行显示
android:ellipsize //在哪里省略文本。内容为一行后,由于太长,文本最后会显示省略号表示还有内容。一般为 marquee
android:focusable  //是否可以获取焦点
android:focusableInTouchMode  //用于控制视图在触摸模式下是否可以聚焦
android:marqueeRepeatLimit  //字幕动画重复的次数

同时,要实现跑马灯效果,TextView还需要获取焦点,获取焦点的方式

(1)在 TextView 控件中添加 clickable 属性
缺点:需点击一下,才能开始跑马灯效果,在实际项目中一般不会这样用

(2)自定义 TextView

public class MyTextView extends TextView{
    public MyTextView(Context cxt){
        super(cxt)
    }
    
    @Override
    public boolean isFocused(){
        return true;
    }
}

同时,在 xml 文件中使用 MyTextView(类名全称) 来代替 TextView

(3)控件中添加 “” 去请求焦点

<TextView>
    ... ...
    android:textSize="30sp"
    <requestFocus/>
</TextView>

二、Button 控件

作用:按钮

注意

1、Button是TextView的子类(所以,Button包含TextView的属性),Button的基本属性包括:

  • drawable:引用的Drawable位图
  • state_focused:是否获得焦点
  • state_pressed:控件是否被按下
  • state_enable:控件是否可用
  • state_selected:控件是否被选择
  • state_checked:控件是否被勾选
  • state_checkable:控件可否被勾选 eg:checkbox
  • state_window_focus:是否获得窗口焦点
  • state_active:控件是否处于活动状态 eg: slidingTab
  • state_single:控件包含多个子控件时,确定是否只显示一个子控件
  • state_first:控件包含多个子控件时,确定第一个子控件是否处于显示状态
  • state_middle:控件包含多个子控件时,确定中间一个子控件是否处于显示状态
  • state_last:控件包含多个子控件时,确定最后一个子控件是否处于显示状态

2、按下按钮不同的按钮颜色或背景

StateListDrawable是Drawable资源的一种,关键节点,只需要将 Button 的 background 属性设置为该 drawable 资源,即可轻松实现,按下按钮不同的按钮颜色或背景。

点击Button时,设置Button的背景变化:

(1)在 res/drawable 目录下新建一个Drawable资源文件btn_selector.xml,默认情况,文件中的根节点是,选择器

(2)在中添加 ,在其属性 drawable 中添加图片路径,state_pressed设置状态

<selector xmlns:android="http://schemas.android.com/apk/res/android">
	<item android:drawable="@drawable/1" android:state_pressed="true"/>  <!--按下时显示1.jpg-->
 	<item android:drawable="@drawable/2"/>  <!--默认显示2.jpg-->
</selector>

(3)将新建的Drawable资源文件btn_selector.xml 添加到 Button 的 background 属性中

<Button
    android:text="按钮"
    android:background="@drawable/btn_selector"
    .../>

(4)给 Button 的背景添加颜色选择

<Button
    android:text="按钮"
    android:background="@drawable/btn_selector"
    android:backgroundTint="@color/btn_color_selector"
    .../>
<selector> 
	<item android:drawable="@drawable/1" android:state_pressed="true"/>  <!--按下时显示1.jpg-->
	<item android:drawable="@drawable/2"/>  <!--默认显示2.jpg-->
</selector>

3、Button 事件处理

常见的三个事件处理:

(1)点击事件:

btn.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        ...
    }
});

(2)长按事件:

btn.setOnLongClickListener(new View.OnClickListener(){
    @Override
    public boolean onLongClick(View v){
        return false; //若返回值为true,则onClick不会执行
    }
});

(3)触摸事件:

btn.setOnTouchListener(new View.OnTouchListener(){
    @Override
    public boolean onTouch(View v, MotionEvent event){  //event包括Down、Up、Move
        return false;  //若返回值为true,则onLongClicK 和 onClick不会执行
    }
});

三、EditText 控件

作用: 允许用户在空间里输入和编辑内容

注意:

EditText的内容一般结合Button来获取,在Button的点击事件中,获取EditText内容:

btn.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        //获取EditText的内容
        String text = et.getText().toString();
    }
});

四、ImageView 控件

作用: 显示图片

注意:
maxWidth、maxHeight 属性 和 adjustViewBounds 属性一起使用,可以使图片宽高中较长的一方等于max,另一方等比例缩放


五、ProgressBar 控件

作用: 进度条

注意:

在 xml 布局文件中添加 控件后,

1、进度条,默认是类似网络数据加载的圆弧形转圈图标

progressBar.setVisibility(View.VISIBLE);  //设置进度条可见
progressBar.setVisibility(View.GONE);  //设置进度条显示隐藏

2、设置进度条为长形进度条,随实际进度情况增加进度值

<ProgressBar
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:max="100"/>

其中,属性 max 表示进度最大值,这里设置为100,即如果进度为10,则为10%

//增加进度的方法
int progress = progressBar2.getProgress();
progress += 10; //设置每次进度增加10%
progressBar2.setProgress(progress);

3、长形进度条,但是循环加载进度,类似转圈的循环,不显示具体进度

<ProgressBar
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:indeterminate="true"/>

六、ToolBar 控件(androidx.appcompat.widget.ToolBar)

作用: 自定义应用的主题标题栏,替换应用自带的 ActionBar

注意:

高度可设置为

android:layout_height="?attr/actionBarSize"

七、AlertDialog 控件

作用: 对话框

注意:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder
    .setIncon(R.mipmap.ic_dialog)
    .setView(getLayoutInflater().inflate(R.layout.dialog_view)) //设置自定义布局
    //... 各种builder的属性设置
    .create()
    .show();

八、PopupWindow 控件

作用: 弹出框

注意:

...
void onClick(View view){
    View popupView = getLayoutInflater().inflate(R.layout.popup_view, null);
    PopupWindow popupWindow = new PopupWindow(popupView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
    popupWindow.showAsDropDown(view); //相对某个控件的位置(正左下方)
    popupWindow.dismiss();//关闭弹窗
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值