Android学习——UI基础组件二
2019-03-17 17:41
375 查看
Android基础组件
1.Spinner下拉列表框
静态:
<Spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:entries="@array/city"/>
在res/values/strings.xml文件中设置列表内容
<array name="city"> <item>北京</item> <item>上海</item> <item>广州</item> <item>天津</item> <item>温州</item> <item>宁波</item> </array>
动态:
<Spinner android:id="@+id/spinner_role" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_below="@id/spinner"/>
private Spinner spinner_role; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); spinner_role=findViewById(R.id.spinner_role); String[] roles = {"管理员","VIP会员","普通会员","游客"}; //方式一 //这是用来创建一个数组适配器(上下文,下拉列表里的布局文件,显示下拉选项的组件ID,数据) ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,android.R.id.text1,roles); //方式二(上下文,数据,布局) ArrayAdapter adapter1=ArrayAdapter.createFromResource(this,R.array.city,android.R.layout.simple_spinner_dropdown_item); adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //通过适配器进行数据的绑定 spinner_role.setAdapter(adapter1);
AutoCompleteTextView
为客户提供建议,自动匹配
completionThreshold输入几个字符开始提示
<AutoCompleteTextView android:id="@+id/autoCompleteTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:text="AutoCompleteTextView" android:completionThreshold="1"/>
在res中新建一个资源文件
<array name="city_name"> <item>北京</item> <item>上海</item> <item>广州</item> <item>天津</item> <item>温州</item> <item>宁波</item> </array>
private AutoCompleteTextView autoCompleteTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); autoCompleteTextView=findViewById(R.id.autoCompleteTextView); ArrayAdapter adapter=ArrayAdapter.createFromResource(this,R.array.city_name,android.R.layout.simple_dropdown_item_1line); autoCompleteTextView.setAdapter(adapter);
ProgressBar(进度条)
1.ProgressBar基本属性的使用
<ProgressBar android:id="@+id/progressBar" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true"/> <ProgressBar android:id="@+id/progressBar2" style="?android:attr/progressBarStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_below="@id/progressBar"/> <ProgressBar android:id="@+id/progressBar3" style="?android:attr/progressBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_below="@id/progressBar2"/>
indeterminate(不确定)横向进度条是否确定值,为true,不确定值
<ProgressBar android:id="@+id/progressBar4" style="?android:attr/progressBarStyleHorizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_below="@id/progressBar3" android:max="100" android:progress="50" android:secondaryProgress="80" android:indeterminate="true"/>
2.ProgressBar对话框与标题进度条
点击按钮,出现对话框进度条
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_below="@id/progressBar4" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:text="对话框进度条" android:onClick="showDialogProgress"/>
/* * 显示对话框进度条 * @param v * */ public void showDialogProgress(View v){ //创建对话框进度条 ProgressDialog pd=new ProgressDialog(this); pd.setMax(100); pd.setIndeterminate(false); //当前进度 pd.setProgress(30); pd.setTitle("下载对话框"); pd.setMessage("正在下载中..."); //设置水平样式 pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.show(); //ProgressDialog pd2=ProgressDialog.show(this,"download","downloading...",false); }
setCancelable()是否可以取消,true为可以
默认为圈形进度条
标题进度条
public class Main2Activity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置标题栏 requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); setContentView(R.layout.activity_main2); //显示进度条 setProgressBarIndeterminateVisibility(true);
3.自定义进度条
在drawable中创建progress_bg,将自己想要的进度条图片放在drawable下
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <rotate android:drawable="@drawable/z1" android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%"></rotate> </item> </layer-list>
<ProgressBar android:id="@+id/progressBar5" style="?android:attr/progressBarStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_below="@id/button1" android:indeterminateDrawable="@drawable/progress_bg"/>
AlterDialog提示消息
1.提示对话框
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:text="提示对话框" android:onClick="dialogClick1"/>
/* * 1.提示对话框 * @param v * */ public void dialogClick1(View v){ //创建一个提示对话框的构造者 AlertDialog.Builder builder=new AlertDialog.Builder(this); builder.setTitle("提示"); builder.setMessage("请问你爱学习吗?"); builder.setIcon(R.mipmap.ic_launcher); //正面的按钮 builder.setPositiveButton("爱", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(Main2Activity.this, "对不起,打扰了", Toast.LENGTH_SHORT).show(); } }); //反面的按钮 builder.setNegativeButton("不爱", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(Main2Activity.this, "认识一下吧!", Toast.LENGTH_SHORT).show(); } }); //中立的按钮 builder.setNeutralButton("隐藏对话框", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast. 24000 makeText(Main2Activity.this, "随便了", Toast.LENGTH_SHORT).show(); } }); //两种显示方法: //第一种 // AlertDialog dialog = builder.create(); // dialog.show(); //第二种 builder.show(); }
2.列表对话框
<Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_below="@id/button1" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:onClick="dialogClick2" android:text="列表选项对话框" />
//列表对话框 public void dialogClick2(View v){ AlertDialog.Builder builder=new AlertDialog.Builder(this); builder.setTitle("请选择一个平台"); final String[] items={"Android","iOS","Windows Phone"}; builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(Main2Activity.this, items[which], Toast.LENGTH_SHORT).show(); } }); builder.show(); }
3.多选列表对话框
<Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_below="@id/button2" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:text="多选列表对话框" android:onClick="dialogClick3"
//多选列表对话框 public void dialogClick3(View v){ AlertDialog.Builder builder=new AlertDialog.Builder(this); builder.setTitle("请选择一个平台"); final ArrayList<String> list=new ArrayList<String>(); final String[] items={"Android","iOS","Windows Phone"}; builder.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { if (isChecked){ list.add(items[which]); }else{ list.remove(items[which]); } } }); //正面的按钮 builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(Main2Activity.this, list.toString(), Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); //反面的按钮 builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { list.clear(); dialog.dismiss(); } }); builder.show(); }
4.单选项对话框
//多项单选对话框 String result=""; public void dialogClick4(View v){ AlertDialog.Builder builder=new AlertDialog.Builder(this); builder.setTitle("请选择一个平台"); final String[] items={"Android","iOS","Windows Phone"}; builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result=items[which]; Toast.makeText(Main2Activity.this,"你选中了"+items[which],Toast.LENGTH_SHORT).show(); } }); //正面的按钮 builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(Main2Activity.this, result, Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); //反面的按钮 builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.show(); }
5.自定义对话框
首先新建一个布局文件
内置EditText
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="@dimen/default_gap"//在dimens中获取自定的样式 android:orientation="vertical"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edidText_username" android:inputType="textPersonName" android:hint="username"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edidText_password" android:inputType="textPassword" android:hint="password"/> </LinearLayout>
//自定义对话框 public void dialogClick5(View v){ AlertDialog.Builder builder=new AlertDialog.Builder(this); builder.setTitle("登录对话框"); // builder.setView(R.layout.login_layout);//api 21(android 5.0) 支持 //实例化布局文件 final View view=getLayoutInflater().inflate(R.layout.login_layout,null); builder.setView(view); //正面的按钮 builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { EditText editText_password = view.findViewById(R.id.edidText_password); EditText editText_username = view.findViewById(R.id.edidText_username); String username=editText_username.getText().toString(); String password=editText_password.getText().toString(); Toast.makeText(Main2Activity.this, username+"--"+password, Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); //反面的按钮 builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.show(); }
日期和时间
1.TimePickerDialog
新建一个Java类,用于显示时间对话框
public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { int hour; int minute; private Main2Activity main2Activity; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); main2Activity= (Main2Activity) getActivity(); } @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { //获取当前系统时间 Calendar c=Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); //创建时间对话框,参数为(上下文,设置时间事件,小时,分钟,是否为24小时) TimePickerDialog dialog=new TimePickerDialog(getActivity(),this,hour,minute,true); return dialog; } //时间对话框完成按钮的单击事件 @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { this.hour= hourOfDay; this.minute=minute; main2Activity.setTimeValue(hour,minute); } }
<Button android:id="@+id/button_setTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_below="@id/textView_time" android:text="设置时间" android:onClick="setTimeClick"/> <TextView android:id="@+id/textView_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="no time" />
方法
private TextView textView_time; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); textView_time=findViewById(R.id.textView_time); } public void setTimeValue(int hour,int minute){ textView_time.setText(hour+":"+minute); } public void setTimeClick(View view){ DialogFragment timePickerFragment=new TimePickerFragment(); timePickerFragment.show(getSupportFragmentManager(),"timePicker"); }
2.DatePickerDialog
新建类
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { private Main3Activity main3Activity; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); main3Activity= (Main3Activity) getActivity(); } //用于创建日期对话框的事件方法 @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { Calendar c=Calendar.getInstance(); int year= c.get(Calendar.YEAR); int mouth= c.get(Calendar.MONTH); int day=c.get(Calendar.DAY_OF_MONTH); DatePickerDialog dialog=new DatePickerDialog(getActivity(),this,year,mouth,day); return dialog; } @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { main3Activity.setDateValue(year,month,dayOfMonth); } }
<TextView android:id="@+id/textView_date" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="no date" /> <Button android:id="@+id/button19" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_below="@id/textView_date" android:onClick="setDateClick" android:text="设置日期" />
private TextView textView_date; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); textView_date=findViewById(R.id.textView_date); } public void setDateValue(int year,int mouth,int day){ textView_date.setText(year+"年"+(mouth+1)+"月"+day+"日"); } public void setDateClick(View view){ DialogFragment dateDialogFragment = new DatePickerFragment(); dateDialogFragment.show(getSupportFragmentManager(),"datePicker"); }
3.TimePicker
<TimePicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/timePicker" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true"/> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_below="@id/timePicker" android:onClick="saveClick" android:text="保存" />
private TimePicker timePicker; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); timePicker=findViewById(R.id.timePicker); } public void saveClick(View v){ int hour = timePicker.getCurrentHour(); int minute = timePicker.getCurrentMinute(); Toast.makeText(this,hour+":"+minute,Toast.LENGTH_SHORT).show(); }
4.DatePicker
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Main3Activity"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TimePicker android:id="@+id/timePicker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true"/> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_below="@id/timePicker" android:onClick="saveClick" android:text="保存" /> <DatePicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/datePicker" android:layout_below="@id/button1" android:layout_alignParentStart="true" android:layout_alignParentLeft="true"/> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_below="@id/datePicker" android:onClick="okClick" android:text="保存" /> </RelativeLayout> </ScrollView> </LinearLayout>
ScrollView为滚动条控件
private TimePicker timePicker; private DatePicker datePicker; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); timePicker=findViewById(R.id.timePicker); datePicker=findViewById(R.id.datePicker); } public void saveClick(View v){ int hour = timePicker.getCurrentHour(); int minute = timePicker.getCurrentMinute(); Toast.makeText(this,hour+":"+minute,Toast.LENGTH_SHORT).show(); } public void okClick(View v){ int year = datePicker.getYear(); int mouth = datePicker.getMonth(); int day = datePicker.getDayOfMonth(); Toast.makeText(this,year+"年"+(mouth+1)+"月"+day+"日",Toast.LENGTH_SHORT).show(); }
相关文章推荐
- [Android UI]基础组件的学习——ToggleButton的使用及样式修改
- Android UI学习组件概述
- 【基础学习】Android 酷炫实用的开源框架(UI框架)
- Android开发学习 组件Service的基础知识
- Android基础学习之Android 四大组件详解
- Android基础学习【历史流程重走】 ---- 四大组件之Service
- Andriod编程基础(三):Android UI 基本常用组件实例
- Android基础学习【历史流程重走】 ----四大组件之BroadCastReceiver
- Android UI学习组件概述
- Android基础学习总结(十六)——基于ijkplayer封装支持简单界面UI定制的视频播放器
- Android学习——基础组件
- android学习——必学基础组件
- Android UI学习组件概述
- 【转】Android学习基础自定义Checkbox组件
- 【Android基础学习】关于Android ListView组件中android:drawSelectorOnTop含意
- Android基础学习【历史流程重走】 ----四大组件之Activity
- Android学习——UI高级组件二
- Android学习之 UI--基础控件
- Android UI新组件学习和使用
- android学习----基础UI编程(二)之TextView 和 EditView(转)