常用的UI组件
文本类:文本框、编辑框
按钮类:普通按钮、图片按钮、单选按钮、复选框
日期时间:日期时间选择器、时间选择器、计时器
文本框 (TextView )
用于文字的显示
android:layout_width=“wrap_content” 文本框的宽度,包裹自身内容
android:text=“Hello World!” 文本框显示的内容,推荐使用字符串资源来定义内容
android:textSize=“30sp” 设置文字大小(sp是android推荐的设置字号的单位)
android:textColor="#FF0000" 设置文字颜色(值的内容可以通过点击代码左边的小方框来选择)
android:singleLine=“true” 设置单行文本框
android:background="@drawable/txt2" 设置文本的背景(建议使用9patch图片,放入drawable中,这样可以随着文字多少,自动缩放**.9.PNG)编辑框(EditView)
可以让用户输入文字内容,实现与用户的交互
android:hint=“请输入密码” 在编辑框中显示提示信息
android:inputType=“textPassword” 用户输入时,输入的内容以小黑点的方式(还可以规定用户输入的数据类型等,如只允许输入数字)
android:drawableLeft="@mipmap/ic_launcher" 实现编辑框左边添加图标与drawableStart相同(还有top、end、right、bottom等,可以将图片放在文字的不同方位)
android:drawablePadding 可以设置图片与文字间的距离
android:lines=“3” 文本框的最大行数,当超出时,自动滚动
android:gravity=“top” 设置文字的位置
android:padding=“5dp” 设置内边距
android:layout_margin=“10dp” 设置外边距
android:inputType=“textMultiLine” 设置为多行获取编辑框的内容
EditText et = (EditText) findViewById(R.id.et1); 在JAVA中添加
et.getText()ImageView
android:scaleType=“fitXY” 图片横向铺满
按钮(Button)
TextView的子类,TextView支持的属性,按钮都支持
事件监听器两种实现方法
a) 匿名内部类作为单击事件监听器
b)通过onClick属性实现
方法a:
效果:单击按钮时,显示消失提示框
Button button = (Button) findViewById(R.id.bnt1);//获取按钮
button.setOnClickListener(new View.OnClickListener() {//参数为匿名内部类
@Override
public void onClick(View v) {//重写onClick
//下面写单击时要执行代码
Toast.makeText(MainActivity.this ,"单击了按钮1",Toast.LENGTH_SHORT).show();//单击时提示消息提示框,Toast.LENGTH_SHORT用于设置消息提示框的显示时间长短
}
});
方法b:
步骤:
首先在Activity中编写一个包含View类型参数的方法
再将android.onClick属性指定为上一步中的方法名
JAVA中添加方法
public void myClick (View view){
Toast.makeText(MainActivity.this,"单击了按钮2",Toast.LENGTH_LONG).show();
}
XML中指定方法名
<Button
android:id="@+id/bnt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮2"
android:onClick="myClick"
/>
图片按钮(ImageButton)
与button的不同是,它没有text属性
设置按钮背景为透明
android:background="#0000"
单选按钮(RadioButton)
为单选按钮设置默认选中
android:checked=“true”
获取单选按钮的数量
rgbnt.getChildCount()
单选按钮组
用RadioGroup 将button包含,就组成了button组
RadioButton r = findViewById(checkedId); //获取单选按钮组
onCheckedChanged 按钮被改变
getText() 获取按钮的text值
获取选择的按钮值,并显示
当点击按钮bxx时,监听单选按钮组是否有被选中的,如果有,显示被选中按钮的text
Button bnt2 = (Button)findViewById(R.id.bxx);//
bnt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0;i<rg.getChildCount();i++) {
RadioButton r= (RadioButton) rg.getChildAt(i);
if(r.isChecked())
{
Toast.makeText(MainActivity.this,r.getText(),Toast.LENGTH_SHORT).show();
}
}
}
});
复选按钮(CheckBox)
事件监听器的设置
like1 = (CheckBox) findViewById(R.id.ch1);
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();
}
}
});
日期选择器DatePicker
public class MainActivity extends Activity {
int year,month,day;
DatePicker datePicker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
datePicker = (DatePicker) findViewById(R.id.date1);
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();
}
}
时间选择器TimePicker
public class MainActivity extends Activity {
TimePicker timePicker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timePicker = (TimePicker) findViewById(R.id.date1);
timePicker.setIs24HourView(true);
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
android:format=“已用时间:%s” 用于设置时间的显示方式
五种常用方法
setBase() 设置计时器的起始时间
setFormat() 设置显示时间的格式
start() 指定开始计时
stop()指定停止计时
setOnChronometerTickListener()为计时器绑定时间监听器,当计时器改变时,触发改监听器
获取系统时间
SystemClock.elapsedRealtime()
计时器计时60s,后停止计时
public class MainActivity extends Activity {
Chronometer ch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ch = (Chronometer) findViewById(R.id.date1);
ch.setBase(SystemClock.elapsedRealtime());//设置起始时间
ch.setFormat("%s");//设置格式
ch.start();//开始计时
ch.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {//监听计时器改变
@Override
public void onChronometerTick(Chronometer chronometer) {
if (SystemClock.elapsedRealtime() - ch.getBase() >= 60000)//计时到60s后
{
ch.stop();//结束计时
}
}
});
}
}