Android开发之基本UI组件(个人学习笔记)

4.基本UI组件

4.1文本类组件

4.1.1 文本框组件  <TextView />

常用属性:android:layout_width
android:layout_height
android:text
android:textSize
android:textColor

android:singleLine(值为布尔型)是否为单行

4.1.2编辑框组件  <EditText />

 常用属性:android:layout_width
           android:layout_height
           android:hint
           android:inputType="textPassword"  输入密码之后会变成小黑点
           android:inputType="number" 只能输入数字

android:drawableLeft=android:drawableStart="@mipmap/img1"  在编辑框文字左侧绘制(添加)图像

android:drawableBottom  在编辑框文字底部绘制图像

android:drawableEnd= android:drawableRight 在编辑框文字右侧绘制图像

android:drawableTop  在编辑框文字顶部绘制图像

android:drawablePadding 设置文字与图片之间的距离

android:lines  只能显示的行数,多的会向上,通过向下拉可以看到上面的内容

后台获取前台输入的内容:

EditText   editText=findViewById(R.id.edittext1);
editText.getText();

4.2按钮类组件

4.2.1 普通按钮

为普通按钮添加单击事件监听器

  1. 匿名内部类作为点击事件监听器

Button button=findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this, "单击了按钮1", Toast.LENGTH_SHORT).show();
    }
});

(2)通过OnClick属性实现

①在Activity中编写一个包含View类型参数的方法。

public void MyClick(View view){
    Toast.makeText(MainActivity.this,"单击了按钮1",Toast.LENGTH_SHORT).show();
}

②将android:onClick属性指定为步骤①中的方法名。

android:onClick="MyClick"

 

4.2.2 图片按钮   <ImageButton />

(1)图片按钮和普通按钮的区别:

相同点:单击时都可以触发onClick事件

不同点:图片按钮没有android:text属性,文字是在制作图片时加上的

(2)android:background="#0000"背景设置为透明,如果不设置,则是灰色的

注:getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏显示

 

4.2.3 单选按钮  <RadioButton /> (显示效果为一个未选中小圆

(1)属性:android:text

android:checked(值为布尔型,是否选中)
android:layout_width
android:layout_height

  1. <RadioGroup></RadioGroup>内包含组件<RadioButton />保证了在一组单选按钮中只能有一个被选中。
  2. ①在改变单选按钮的值时获取当前的值

前台关键代码:

<RadioGroup
    android:id="@+id/radiogroup1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <RadioButton
        android:text=""
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <RadioButton
        android:text=""
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <RadioButton
        android:text="保密"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</RadioGroup>

后端关键代码:

RadioGroup radioGroup=findViewById(R.id.radiogroup1);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {//选中状态改变的监听器
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        RadioButton radioButton=findViewById(checkedId);
        Toast.makeText(MainActivity.this,"性别:"+radioButton.getText(),Toast.LENGTH_LONG).show();
    }
});

②在单击其他按钮来获取按钮的值,实现点击提交按钮,显示选中的值

前台:(在上述代码后添加)

<Button
    android:id="@+id/button1"
    android:text="提交"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

后台: (在上述代码后添加)

Button button=findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        for(int i=0;i<radioGroup.getChildCount();i++){
            RadioButton r= (RadioButton) radioGroup.getChildAt(i);
            if(r.isChecked()){//被选中了
                Toast.makeText(MainActivity.this,r.getText(),Toast.LENGTH_SHORT).show();
                break;
            }
        }
    }
});

 

4.2.4 复选框 <CheckBox />(显示效果为一个未选中小方框)

(1)属性

android:id
android:text
android:layout_width
android:layout_height

android:checked="true" 默认是选中状态

不需要像单选框那样,有一个<RadioGroup></RadioGroup>包裹,需要一行,添加一个<CheckBox />即可

  1. 样例

前端:

<CheckBox
    android:id="@+id/like1"
    android:text="体育"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

 

后端监听:

CheckBox like1;

like1=findViewById(R.id.like1);
like1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(like1.isChecked()){

            Toast.makeText(MainActivity.this,like1.getText(),Toast.LENGTH_SHORT).show();
        }
    }
});

4.3日期时间类组件

4.3.1 日期选择器 <DatePicker />

 

1属性
    android:id
    android:layout_width
    android:layout_height

例子:前台代码:

<DatePicker
    android:id="@+id/datepicker"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

后台代码:

public class MainActivity extends AppCompatActivity {

    int year,month,day;
    DatePicker datePicker;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        datePicker=findViewById(R.id.datepicker);

        Calendar calendar=Calendar.getInstance();
        year=calendar.get(Calendar.YEAR);
        month=calendar.get(Calendar.MONTH);
        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) {
                MainActivity.this.year=year;
                MainActivity.this.month=monthOfYear;
                MainActivity.this.day=dayOfMonth;
                show(year,monthOfYear,dayOfMonth);
            }
        });
    }

    private void show(int year,int month,int day){

        String str=year+""+(month+1)+""+day+"";
        Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
    }
}

4.3.2时间选择器  <TimePicker />

 

例子:前台代码:

<TimePicker
    android:id="@+id/timepicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

后端:

public class MainActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TimePicker timePicker=findViewById(R.id.timepicker);
        timePicker.setIs24HourView(true);//默认是12小时的,加这行代码改为24小时
        timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                String s=hourOfDay+""+minute+"";
                Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
            }
        });

    }

}

4.3.3 计时器 <Chronometer />

(1)常用方法:

setBase()  设置计时器的起始时间

setFormat()  设置显示时间的格式

start()  指定开始计时

stop()  指定停止计时

setOnChronometerTickListener() 为计时器绑定事件监听器,当计时器改变时触发该监听器

例子:前台代码:

<Chronometer
    android:id="@+id/chronometer"
    android:textColor="#F44336"
    android:layout_marginTop="10dp"
    android:layout_alignParentRight="true"
    android:layout_marginRight="8dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

后台代码:

public class MainActivity extends AppCompatActivity {

    Chronometer chronometer;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        chronometer=findViewById(R.id.chronometer);

     chronometer.setBase(SystemClock.elapsedRealtime());//SystemClock.elapsedRealtime()获取当前系统时间
        chronometer.setFormat("%s");
        chronometer.start();
        chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
            @Override
            public void onChronometerTick(Chronometer chronometer) {
                if(SystemClock.elapsedRealtime()-chronometer.getBase()>=60000) {//大于六十秒就要停止
                    chronometer.stop();
                }
            }
        });
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值