Android常用UI控件的使用(一)

Android中所有控件的顶层基类view的常用属性说明
android:id设置控件的标识符号
android:layout_width组件的宽度,一般写:wrap_content或者match_parent(fill_parent),前者是控件显示的内容多大,控件就多大,而后者会填满该控件所在的父容器;当然也可以设置成特定的大小,比如我这里为了显示效果,设置成了200dp
android:layout_height设置子组件的布局高度
android:background设置控件的背景色
android:onClick设置控件的单击事件绑定监听器
android:visibility设置控件是否可见
android:alpha设置控件透明度(0-1之间的数值)
android:padding设置子组件的内边距
android:layout_margin设置子组件的外边距
android:visibilityvisible:可见;invisible:不可见,但仍然占据原来的屏幕空间;gone:不可见,也不会占据屏幕空间

一、文本类组件

TextView文本框组件

属性作用
android:text设置组件显示内容,属性值建议使用string.xml资源文件进行设置然后调用
android:textSize设置文字大小,属性值为n sp,n为任意正整数,sp是文字大小单位
android:textColor设置文字颜色(通过colors.xml资源来引用),属性值可以使用预设好的属性值也可以自行使用类似#FFFFFF的格式进行调整,在图形界面调整时,RGB代表不透明颜色,ARGB代表可透明颜色
6位(#000000)就是RGB值(红绿蓝)
8位(#1e000000)头两位是透明度,后6位是RGB值,00是完全透明,ff是完全不透明,比较适中的透明度值是 1e
android:singleLine设置组件单行显示,属性值为true或者false
android:maxWidth设置组件的最大宽度
android:textStyle设置字体风格,三个可选值:normal(无效果),bold(加粗),italic(斜体)
android:gravity设置控件中内容的对齐方向,TextView中是文字,ImageView中是图片等等
android:background控件的背景颜色,可以理解为填充整个控件的颜色,可以是图片

在这里插入图片描述

EditText编辑框组件

EditText是TextView的子类,所以TextView有的属性EditText同样也有。

属性作用
android:hint设置编辑框输入提示,当编辑框没有任何输入时显示提示内容
android:inputType设置输入数据类型,可选值:textPassword(密码),number(数字)等
android:drawableLeft:在编辑框左侧绘制一个图像,其他绘制方向以及start和end的使用方法等同于之前的组件
android:drawablePadding设置上一个绘制的图像的内边距
android:lines设置编辑框的输入行数限制为n,超过将会自动隐藏并允许向上滚动,属性值为正整数
android:textColorHint提示文字的颜色。
android:maxLength限制文本的最大长度,超出部分将不会显示。
android:digits限制能够输入的字符。
android:textCursorDrawable设置光标样式

在这里插入图片描述

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:digits="0123456789*#"
    android:hint="只能输入0123456789*#" />

editText.getText();获取编辑框组件的内容

protected void onCreate(Bundle savedInstanceState) {
 	super.onCreate(savedInstanceState);
    setContentView(R.layout.one);
    EditText et = findViewById(R.id.et1);
    System.out.println(et.getText());//获取编辑框的内容
}

二、按钮类组件

Button普通按钮组件

属性说明
android:text用于设置按钮上显示的内容,属性值同上
android:textAllCaps用于控制按钮显示文字是否全部大写,默认为true,属性值为true或者false
android:onClick设置单击按钮时触发的自定义函数,另一种方法是在Java文件中为按钮

添加事件监听器:

  1. 通过匿名内部类作为事件监听器类,这种方法适用于事件监听器只是临时使用一次,因为大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),这是一种使用最广泛的方法:
    方法一:匿名内部类
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.one);
    Button btn = findViewById(R.id.btn1);
    //为button按钮注册监听器,并通过匿名内部类实现
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"点击了按钮1",Toast.LENGTH_SHORT).show();
        }
    });
}
  1. 使用实现接口的方式来进行注册,让Activity类实现了View.OnClickListener事件监听接口,并重写onClick()方法,然后在调用button的setOnClickListener()方法将MainActivity的实例传进去。这样每当点击按钮时,就会执行onClick()方法中的代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.one);
        Button btn1 = findViewById(R.id.btn1);
        Button btn2 = findViewById(R.id.btn2);
        //将MainActivity的实例传进去
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
    }

    //重写onClick()方法,用switch区分是哪个id
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn1:
                Toast.makeText(MainActivity.this,"点击了按钮1",Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn2:
                Toast.makeText(MainActivity.this,"点击了按钮2",Toast.LENGTH_SHORT).show();
                break;
        }
    }
}
  1. onClick属性
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/btn2"
    android:onClick="myClick"
    android:text="按钮2"/>
public void myClick(View view){
   Toast.makeText(MainActivity.this,"点击了按钮2",Toast.LENGTH_LONG).show();
}

ImageButton图片按钮组件

属性说明
android:src设置图片按钮显示内容
android:background = “#0000”背景设置透明
android:scaleType=“fitXY”把原图按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满

RadioButton单选按钮

在 RadioButton 没有 被选中时,用户通过单击来选中它。但是,在选中后,无法通过单击取消选中。

RadioGroup 是单选组合框,用于 将 RadioButton 框起来。在多个 RadioButton被 RadioGroup 包含的情况下,同一时刻只可以选择一个 RadioButton。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <RadioGroup
        android:id="@+id/radio_group"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
		//设置RadioButton的排列方式,分为水平排列horizontal与垂直排列vertical
		>
        <RadioButton
            android:id="@+id/rd1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="男"
            />
        <RadioButton
            android:id="@+id/rd2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"//默认选中状态
            android:text="女"
            />
        <RadioButton
            android:id="@+id/rd3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="东方不败"
            android:textStyle="normal"  
            //normal,bold,italic分别为正常,加粗以及斜体,默认为normal
            />
    </RadioGroup>
</LinearLayout>
  1. 用 setOnCheckedChangeListener 来对 RadioGroup 进行监听的代码(选中状态改变的监听器)
public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.one);

        //设置选中状态改变的监听器
        RadioGroup radioGroup = findViewById(R.id.radio_group);
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                //checkedId被选中的单选框的id值
                RadioButton radioButton= findViewById(checkedId);
                Toast.makeText(MainActivity.this,"性别:"+radioButton.getText(),Toast.LENGTH_SHORT).show();
            }
        });
    }
}
  1. 通过点击其他按钮进行监听
public class MainActivity extends AppCompatActivity{
    RadioGroup radioGroup;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.one);
        radioGroup = findViewById(R.id.radio_group);
        //通过点击其他按钮进行监听
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //遍历单选按钮,判断是否被选中
                for(int i = 0;i<radioGroup.getChildCount();i++){
                    //获取第i个单选按钮
                    RadioButton radioButton = (RadioButton)radioGroup.getChildAt(i);
                    if(radioButton.isChecked()){
                        Toast.makeText(MainActivity.this,"性别:"+radioButton.getText(),Toast.LENGTH_SHORT).show();
                        break;
                    }
                }
            }
        });
    }
}

CheckBox复选按钮

CheckBox在布局文件中的常用的属性以及用法:

    <CheckBox
        android:id="@+id/check_box1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="篮球"
        android:checked="true"
        />
    <CheckBox
        android:id="@+id/check_box2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="足球"
        />
    <CheckBox
        android:id="@+id/check_box3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="乒乓球"
        />

设置监听器,对每一个多选按钮进行事件监听 setOnCheckedChangeListener,通过 isChecked 来判断 选项是否被选中,做出相应的事件响应。

public class MainActivity extends AppCompatActivity{
    CheckBox checkBox1;
    CheckBox checkBox2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.one);
        checkBox1 = findViewById(R.id.check_box1);
        checkBox2 = findViewById(R.id.check_box2);
        //为第一个复选框设置状态改变监听器
        checkBox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                if(checkBox1.isChecked()){
                    Toast.makeText(MainActivity.this,checkBox1.getText(),Toast.LENGTH_SHORT).show();
                }
            }
        });
        //为第二个复选框设置状态改变监听器
        checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                if(checkBox2.isChecked()){
                    Toast.makeText(MainActivity.this,checkBox2.getText(),Toast.LENGTH_SHORT).show();
                }

            }
        });
    }
}

DatePicker 日期选择器

文件布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <DatePicker
        android:id="@+id/datepicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>

创建监听日期改变监听器

public class MainActivity extends AppCompatActivity{

    int year,month,day;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.one);
        DatePicker datePicker = findViewById(R.id.datepicker);
        //获取Calendar类的实例化对象
        Calendar calendar = Calendar.getInstance();
        year = calendar.get(Calendar.YEAR);
        //月份在Calendar中是从0开始的,也就是说1月份的值为0,因此需要加1才是现实中表示的月份
        month = calendar.get(Calendar.MONTH)+1;
        day = calendar.get(Calendar.DAY_OF_MONTH);
        
        //监听日期改变
        datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                //显示改变后的时间
                show(year,monthOfYear,dayOfMonth);
            }
        });
        /*
        //效果同上
		datePicker.setOnDateChangedListener(new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                //显示改变后的时间
                show(year,monthOfYear,dayOfMonth);
            }
        });
		*/

    }
    private void show(int year,int month,int day){
        String str = year+"年"+month+"月"+day+"日";
        Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
    }
}

在这里插入图片描述

TimePicker 时间选择器

布局文件代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <TimePicker
        android:id="@+id/time_picker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>

添加改变时间的监听器

public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.one);
        TimePicker timePicker = findViewById(R.id.time_picker);
        timePicker.setIs24HourView(true);//将其设置为24小时制(默认为12小时制)
        timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                String str = hourOfDay+"时"+minute+"分";
                Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
            }
        });
    }
}

在这里插入图片描述
在这里插入图片描述

Chronometer计时器

常用方法:

在这里插入图片描述

布局文件代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <Chronometer
        android:id="@+id/chronometer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:format="已用时间:%s"/>
</LinearLayout>

添加监听器,计时大于60秒停止计时

public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.one);
        Chronometer chronometer = findViewById(R.id.chronometer);
        //设置起始时间为当前时间
        chronometer.setBase(SystemClock.elapsedRealtime());
        //设置显示格式
        chronometer.setFormat("%s");
        //开始计时
        chronometer.start();
        chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
            @Override
            public void onChronometerTick(Chronometer chronometer) {
                //如果当前时间 - 计时器的起始时间 >= 60秒
                if(SystemClock.elapsedRealtime()-chronometer.getBase()>=60000){
                    //停止计时
                    chronometer.stop();
                }
            }
        });
    }
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值