Android 基础UI组件(二)
1、Spinner
提供一个快速的方法来从一组值中选择一个值。在默认状态Spinner显示当前选择的值。触摸Spinner与所有其他可用值显示一个下拉菜单,可以选择一个新的值。
- /**
- * 写死内容:
- * 只需在value内创建一个array,写上数据,在xml里引用
- */
- <array name="city">
- <item>北京</item>
- <item>上海</item>
- <item>广州</item>
- <item>天津</item>
- <item>大连</item>
- </array>
- <Spinner
- android:id="@+id/sp_Ct"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:entries="@array/city" />
动态设置数据:
- sp_name = (Spinner) findViewById(R.id.sp_name);
- //通过适配器进行数据得绑定
- //方式一:
- //创建一个数组适配器(参数:上下文、下拉列表里的布局、显示下拉列表选项的组件ID、数据)
- ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
- android.R.layout.simple_list_item_1,android.R.id.text1,name);
- //方式二:
- ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this,
- R.array.city,android.R.layout.simple_dropdown_item_1line);
- sp_name.setAdapter(adapter);
2、AutoCompleteTextView
- <AutoCompleteTextView
- android:id="@+id/auto"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:completionThreshold="1"/>
- auto = (AutoCompleteTextView) findViewById(R.id.auto);
- /**
- * AutoCompleteTextView:用法与Spinner类似
* 为了实现自动完成,必须提供建议的文本- * android:completionThreshold这个属性控制匹配几个字符显示列表
- */
- ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,android.R.id.text1,name);
- auto.setAdapter(adapter);
3、ProgressBar
在默写操作进度中的可视指示器,为用户呈现操作的进度,还有一个次要的进度条,用来显示进度,如在流媒体播放的缓冲区的进度
一个进度条也可不显示进度,在不确定模式下,进度条显示循环动画。这种模式常用于应用程序使用任务的长度是未知的进度条也就是一个表示运转的过程,例如发送短信,连接网络等,表示一个过程正在执行中。
两种展示方式:表盘形式(普通、大、小)和进度条填充形式,在layout定义时,需要通过设置style属性类设置展示方式
- <ProgressBar
- android:id="@+id/progress"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
- <ProgressBar
- android:id="@+id/progressBar"
- android:progress="50"
- style="?android:attr/progressBarStyleHorizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" />
- /*
- * xml重要属性:
- * android:max 进度条长度最大值
- * android:progress 进度条当前进度值
- * android:secondaryProgress 第二进度条进度值
- * android:progressBarStyle 默认进度条样式
- * android:progressBarStyleHorizontal 水平样式
- */
- /*
- * 重要方法:
- * getMax() 返回这个进度条的范围上限
- * getProgress() 返回当前进度值
- * getSecondaryProgress() 返回次要当前进度之
- * incrementProgressBy(int diff) 指定增加的进步--即步长
- * isIndeterminate() 指示进度条是否在不确定模式下
- * setVisibility(int v) 设置进度条是否可视
- */
创建对话框进度条
- //创建对话框进度条
- ProgressDialog pd = new ProgressDialog(this);
- pd.setMax(100);
- // pd.setIndeterminate(false);
- pd.setProgress(30);
- pd.setSecondaryProgress(70);
- //设置是否可以取消
- pd.setCancelable(true);
- pd.setTitle("下载中");
- pd.setMessage("正在下载中。。");
- pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
- pd.show();
设置标题进度条(该方法必须在setContentView方法之前)
- requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
- //显示标题栏进度条
- setProgressBarIndeterminate(true);
4、Dialog
- /**
- * 对话框指的是在当前Activity之上的一个小窗口.
- * 对话框一般用于提示信息和与当前应用程序直接相关的小功能
- * 处于对话框下面的Activity失去焦点 对话框接受所有用户的交互
- * @author Administrator
- *
- */
- //创建一个提示对话框的构造者
- AlertDialog.Builder dialog = new AlertDialog.Builder(this);
- dialog.setTitle("温馨提示");
- dialog.setMessage("1111");
- dialog.setIcon(R.mipmap.ic_launcher);
- dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
- //选择之后的操作
- }
- })
- .setNegativeButton("取消", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
- //选择之后的操作
- }
- })
- .show();
- AlertDialog.Builder alertDialog2 = new AlertDialog.Builder(MainActivity.this);
- alertDialog2.setTitle("提示");
- alertDialog2.setIcon(R.drawable.ic_launcher);
- /**
- * 1.按钮中显示的文本内容 2点击按钮时触发的事件
- * 在Android2.3.1平台下三个按钮的位置是固定的 分别在最左侧 右侧 居中
- * 在4.0平台下 setPositiveButton和setNegativeButton位置恰恰相反 分别置于最右侧和最左侧
- */
- alertDialog2.setMessage("亲,确定要退出吗?");
- alertDialog2.setPositiveButton("确定", new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Toast.makeText(MainActivity.this, ""+which, Toast.LENGTH_SHORT).show();
- }
- });
- alertDialog2.setNegativeButton("取消", new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Toast.makeText(MainActivity.this, ""+which, Toast.LENGTH_SHORT).show();
- }
- });
- alertDialog2.setNeutralButton("再看看", new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Toast.makeText(MainActivity.this, ""+which, Toast.LENGTH_SHORT).show();
- }
- });
- alertDialog2.create();
- alertDialog2.show();
- break;
- //显示普通item列表的Dialog
- AlertDialog.Builder alertDialg3 = new AlertDialog.Builder(MainActivity.this);
- alertDialg3.setTitle("提示");
- alertDialg3.setIcon(R.drawable.a);
- final String[] colors = getResources().getStringArray(R.array.arrColors);
- alertDialg3.setItems(colors, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {// int which 被点击item的下标
- Toast.makeText(MainActivity.this, colors[which],Toast.LENGTH_SHORT).show();
- }
- });
- alertDialg3.create();
- alertDialg3.show();
- //显示Adapter适配器列表的Dialog
- list.clear();
- AlertDialog.Builder dialog4 = new AlertDialog.Builder(MainActivity.this);
- dialog4.setTitle("提示");
- dialog4.setIcon(R.drawable.a);
- int[] images = {R.drawable.pic1,R.drawable.pic2,R.drawable.pic3,R.drawable.pic4,R.drawable.pic5};
- for (int i = 0; i < images.length; i++) {
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("Image", images[i]);
- map.put("Content", "item"+(i+1));
- list.add(map);
- }
- SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, list, R.layout.item_dialog, new String[]{"Image","Content"}, new int[]{R.id.iamgeView,R.id.textView});
- dialog4.setAdapter(adapter, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Toast.makeText(MainActivity.this, (String)list.get(which).get("Content"), Toast.LENGTH_SHORT).show();
- }
- });
- dialog4.create();
- dialog4.show();
- //显示多选列表的Dialog
- AlertDialog.Builder dialog6 = new AlertDialog.Builder(MainActivity.this);
- dialog6.setTitle("选择颜色");
- dialog6.setIcon(R.drawable.a);
- dialog6.setMultiChoiceItems(R.array.arrColors, new boolean[]{true,true,false}, new OnMultiChoiceClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which, boolean isChecked) {
- }
- });
- dialog6.setPositiveButton("确定", new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Toast.makeText(MainActivity.this, "选择完成", Toast.LENGTH_SHORT).show();
- }
- });
- dialog6.create().show();
- //显示日期选择的Dialog
- /**
- * 弹出日期选择对话框
- * 1.上下文对象
- * 2.设置日期时回调的方法
- * 3.默认的年份
- * 4.默认的月份
- * 5.默认的日期
- */
- DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
- @Override
- public void onDateSet(DatePicker view, int year, int monthOfYear,
- int dayOfMonth) {
- Toast.makeText(MainActivity.this, year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日", Toast.LENGTH_SHORT).show();
- }
- }, 2016, 5, 9);
- datePickerDialog.show();
- // 显示日期选择的Dialog
- /**
- * 3.默认的小时
- * 4.默认的分钟
- * 5.是否已24小时计时法计时 true代表24h false代表12h
- */
- TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
- @Override
- public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
- Toast.makeText(MainActivity.this, hourOfDay+"时"+minute+"分", Toast.LENGTH_SHORT).show();
- }
- }, 14, 54, true);
- timePickerDialog.show();
- AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this);
- LayoutInflater factory = LayoutInflater.from(this);
- final View textEntryView = factory.inflate(R.layout.test, null);
- builder.setIcon(R.drawable.icon);
- builder.setTitle("自定义输入框");
- builder.setView(textEntryView);
- builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- EditText userName = (EditText) textEntryView.findViewById(R.id.etUserName);
- EditText password = (EditText) textEntryView.findViewById(R.id.etPassWord);
- showDialog("姓名 :" + userName.getText().toString() + "密码:" + password.getText().toString() );
- }
- });
- builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- }
- });
- builder.create().show();
消除对话框
dismissDialog(int id)会保留这个对象
removeDialog(int id)会删除这个对象和清除状态
另外如果你在弹出窗口的时候希望返回键失效的话,则可以使用Builder.setCancelable(false),那么返回键就会不起作用了
cancel和dismiss方法的本质是一样的,都是从屏幕中删除Dialog,唯一的区别是调用cancel会调用DialogInterface.OnCancelListener.
Android 基础UI组件(二)的更多相关文章
- Android 基础UI组件(一)
1.Toast //显示文字 Toast.makeText(this,"Toast显示文本",Toast.LENGTH_SHORT).show(); //显示图片 Toast to ...
- Android常见UI组件之ListView(二)——定制ListView
Android常见UI组件之ListView(二)--定制ListView 这一篇接上篇.展示ListView中选择多个项及实现筛选功能~ 1.在位于res/values目录下的strings.xml ...
- Android基础测试题(二)
今天给大家带来的是Android基础测试题(二) 题目要求: 定义一个5位长度的整型数组并初始化,然后构建方法根据用户传入的数字判断是否存在数组中,如果存在,返回所在位置,如果不存在,返回-1 首先第 ...
- Android之UI编程(二):表格布局
表格布局(TableLayout)继承了LinearLayout,它的本质依然是线性布局管理器,表TableLayout采用行.列的形式来管理UI组件,它并不需要明确地声明暴行多少行.多少列,而是通过 ...
- Android 高级UI组件(二)
1.ExpandableListView 显示垂直滚动两级列表的条目,只允许两个层次 整体思路: 要给ExpandableListView设置适配器,那么必须先设置数据源. 数据源,就是此处的适配器类 ...
- Android用户界面 UI组件--TextView及其子类(二) Button,selector选择器,sharp属性
1.XML文件中的OnClick 属性可以指定在Activity中处理点击事件的方法,Activity中必须定义该属性指定的值作为方法的名字且有一个View类型的参数,表示此物件被点击. 2.使用se ...
- Android用户界面 UI组件--AdapterView及其子类(二) AdapterViewAnimator及其子类
AdapterViewAnimator:当在视图间切换时会显示动画. android:animateFirstView 定义ViewAnimation首次显示时是否对当前视图应用动画. android ...
- Android 高级UI组件(三)
一.popupWindow 1.AlertDialog和PopupWindow最关键的区别是AlertDialog不能指定显示位置,只能默认显示在屏幕最中间(当然也可以通过设置WindowManage ...
- Android用户界面 UI组件--AdapterView及其子类(一) ListView及各种Adapter详解
ListView就是列表组件,一般通过继承ListActivity使用系统提供的ListView. 所有的AdapterView组件都需要有一个对应的Adapter作为适配器来显示列表中元素的布局方式 ...
随机推荐
- Linux cat文件正常,vim文件乱码
cat: vim: 1.临时解决 vim 文件后,命令模式下执行: :set encoding=utf-8 2.永久解决 vi 配置文件路径:/etc/virc vim 配置文件路径:/etc/ ...
- Spark的安装及其配置
1.Spark下载 https://archive.apache.org/dist/spark/ 2.上传解压,配置环境变量 配置bin目录 解压:tar -zxvf spark-2.4.5-bin- ...
- fabric运行记录
创建第一个fabric网络 Generate Network Artifacts cd first-network 先关闭服务 ./byfn.sh -m down 然后创建 ./byfn.sh -m ...
- feign微服务调用携带浏览器信息(header、cookie)
import feign.RequestInterceptor; import feign.RequestTemplate; import org.apache.commons.collections ...
- c++学习笔记3(内联函数)
函数调用是有开销的,调用时需将参数放入栈中,返回地址也要放入,返回时还需从栈中取出,跳转返回地址去执行,需几条语句的时间,如果本身程序代码短,则会显得十分浪费,所以引入了内联函数的机制 写法:在函数前 ...
- IDEA 运行maven工程报错:No goals have been specified for this build.....解决办法
出现这种错误可以在pom.xml里配置, 找到<build>标签在下面<plugins>标签上面加上<defaultGoal>compile</default ...
- Go语言核心36讲(Go语言实战与应用六)--学习笔记
28 | 条件变量sync.Cond (下) 问题 1:条件变量的Wait方法做了什么? 在了解了条件变量的使用方式之后,你可能会有这么几个疑问. 1.为什么先要锁定条件变量基于的互斥锁,才能调用它的 ...
- 『学了就忘』Linux用户管理 — 52、用户组管理相关命令
目录 1.添加用户组 2.删除用户组 3.把用户添加进组或从组中删除 4.有效组(了解) 1.添加用户组 添加用户组的命令是groupadd. 命令格式如下: [root@localhost ~]# ...
- 基于Docker搭建Maven私服Nexus,Nexus详解
备注:首先在linux环境安装Java环境和Docker,私服需要的服务器性能和硬盘存储要高一点,内存不足可能到时启动失败,这里以4核8GLinux服务器做演示 一:基于Docker安装nexus3 ...
- [SQL Server]一列多行转换为字符串
在 SQL Server 中,如何将多行数据变成一个字符串保存. skill 投石 挖矿 刮痧 上面三行数据想要得到结果为:投石,挖矿,刮痧 有两种方式: 拼接字符串. 使用 for XML 首先创建 ...