[android] 解决DatePickerDialog和TimePickerDialog控件取消按钮问题

一. 问题提出


      在Android程序中,我们通常需要使用DatePicker来设置日期,TimePicker来设置时间。其基本步骤是:
             1.先定义DatePicker和TimePicker布局
             2.然后通过Calendar类获得系统时间
             3.接着通过init方法将日期传递给DatePicker初始化日期控件
             4.在响应点击事件中可以通过DatePicker的getYear()、getDayOfMonth()、getMonth()函数获取具体日期
      同时可以在OnDateChangedListener事件中监听日期变化,设置时间函数方法同理。但是使用DatePickerDialog或TimePickerDialog控件时会遇到的一个问题,它就是android版本4.0后没有取消(Cancel)按钮,同时点击界面任何部分都能获取日期或时间,据说它是版本存在的BUG。对比图如下所示:


  

      但是我们期待的效果如下图所示:


  

      我采取的解决方法是通过自定义XML布局,经过DatePicker和TimePicker控件实现,同时在AlertDialog中设置取消按钮和确定按钮,通过函数setNegativeButton()和setPositiveButton()实现。


二. 简单实现日期和时间控件


      简单实现方法非常简单,不需要设置日期或时间的XML布局,直接通过new DatePickerDialog或TimePickerDialog即可实现。代码如下:

//点击"日期"按钮布局 设置日期
layoutDate.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
		new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
			@Override
			public void onDateSet(DatePicker view, int year, int month, int day) {
				// TODO Auto-generated method stub
				mYear = year;
				mMonth = month;
				mDay = day;
				//更新EditText控件日期 小于10加0
				dateEdit.setText(new StringBuilder().append(mYear).append("-")
				    .append((mMonth + 1) < 10 ? "0" + (mMonth + 1) : (mMonth + 1))
                    .append("-")
				    .append((mDay < 10) ? "0" + mDay : mDay) );
			}
		}, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
		calendar.get(Calendar.DAY_OF_MONTH) ).show();
	}
});

      其中mYear、mMonth、mDay是定义变量,同时dateEdit是一个EditText控件用于显示具体日期,当数字小于10时前补0,如2015-01-01。下面是设置时间,显示效果和第三部分的效果相同。

//点击"时间"按钮布局 设置时间
layoutTime.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
		new TimePickerDialog(MainActivity.this,
			new TimePickerDialog.OnTimeSetListener() {
				@Override
				public void onTimeSet(TimePicker view, int hour, int minute) {
					// TODO Auto-generated method stub
					mHour = hour;
					mMinute = minute;
					//更新EditText控件时间 小于10加0
					timeEdit.setText(new StringBuilder()
						.append(mHour < 10 ? "0" + mHour : mHour).append(":")
						.append(mMinute < 10 ? "0" + mMinute : mMinute).append(":00") );
				}
			}, calendar.get(Calendar.HOUR_OF_DAY),
				calendar.get(Calendar.MINUTE), true).show();
	}
});

三. 自定义布局实现


      下面是自定义布局实现,而且我自认为该界面布局非常好看,这也是我“随手拍”项目自己最后总结出来的一个比较欣赏的界面吧!希望你也喜欢,效果如下:


    

      如图所示,界面中日期、时间EditText不可编辑,需要通过点击底部布局来设置。同时备注信息的EditText通过自定义背景实现,设置日期、时间中有取消按钮。
      源代码: 

     1.项目结构如下图所示


      2.activity_main.xml布局文件

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <!-- 顶部路径 -->
    <RelativeLayout
        android:id="@+id/MyLayout_top"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:background="@drawable/top"
        android:layout_alignParentTop="true"
        android:gravity="center">
        <TextView
	        android:id="@+id/textView1"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:textSize="25sp"
	        android:textColor="#ffffff"
	        android:layout_marginTop="5dp"
	        android:layout_marginBottom="5dp"
	        android:text="行程备注信息" />
    </RelativeLayout>

    <!-- 底部按钮 -->
    <RelativeLayout
        android:id="@+id/MyLayout_bottom"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="55dp"
        android:layout_alignParentBottom="true"
        android:background="@drawable/down"
        android:gravity="center">
	    <LinearLayout
	        android:layout_width="match_parent"
	    	android:layout_height="match_parent"
	    	android:orientation="horizontal"
	    	android:layout_alignParentBottom="true" >
		  <LinearLayout
		         android:id="@+id/layout_date"
		         android:layout_width="wrap_content"
		         android:layout_height="match_parent"
		         android:layout_weight="1"
		         android:gravity="center"
				 android:orientation="vertical" >
		         <ImageView
		             android:id="@+id/image_date"
		             android:layout_width="wrap_content"
		             android:layout_height="wrap_content"
		            	android:padding="3dp"
		             android:src="@drawable/image_icon_date" />
		         <TextView
		             android:id="@+id/textview_date"
		             android:layout_width="wrap_content"
		             android:layout_height="wrap_content"
		             android:text="日期"
		             android:textColor="#000000"
		             android:textSize="10sp" />
		   </LinearLayout>
	        <LinearLayout
                android:id="@+id/layout_time"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
    			android:orientation="vertical" >
                <ImageView
                    android:id="@+id/image_time"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                   	android:padding="3dp"
                    android:src="@drawable/image_icon_time" />
                <TextView
                    android:id="@+id/textview_time"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="时间"
                    android:textColor="#000000"
                    android:textSize="10sp" />
            </LinearLayout>
	        <LinearLayout
                android:id="@+id/layout_cancel"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
    			android:orientation="vertical" >
                <ImageView
                    android:id="@+id/image_cancel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                   	android:padding="3dp"
                    android:src="@drawable/image_icon_cancel" />
                <TextView
                    android:id="@+id/textview_cancel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="取消"
                    android:textColor="#000000"
                    android:textSize="10sp" />
            </LinearLayout>
	        <LinearLayout
                android:id="@+id/layout_save"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
    			android:orientation="vertical" >
                <ImageView
                    android:id="@+id/image_save"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                   	android:padding="3dp"
                    android:src="@drawable/image_icon_save" />
                <TextView
                    android:id="@+id/textview_save"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="保存"
                    android:textColor="#000000"
                    android:textSize="10sp" />
            </LinearLayout>
 		</LinearLayout>
	</RelativeLayout>

    <!-- 显示图片 -->
    <RelativeLayout
        android:id="@+id/Content_Layout"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@id/MyLayout_bottom"
        android:layout_below="@id/MyLayout_top"
        android:background="#eee8cc"
        android:gravity="center">
	    <LinearLayout
	        android:layout_width="fill_parent"
	        android:layout_height="fill_parent"
	        android:orientation="vertical" >

	        <LinearLayout
		        android:layout_width="fill_parent"
		    	android:layout_height="wrap_content"
		    	android:orientation="horizontal"
		    	android:layout_alignParentBottom="true" >
		        <TextView
		            android:layout_width="wrap_content"
		            android:layout_height="30dp"
		            android:textColor="#000000"
		            android:text="主  题"
		            android:layout_marginLeft="20dp"
		            android:layout_marginTop="10dp"
		            android:textSize="20dp" />
		        <EditText
		            android:id="@+id/showtitle"
		            android:layout_width="fill_parent"
					android:layout_height="40dp"
					android:layout_marginTop="10dp"
					android:layout_marginLeft="10dp"
					android:layout_marginRight="10dp"
					android:hint="旅行主题"
					android:layout_weight="1"
					android:textSize="20dp"
		            android:textColor="#000000"
		            android:paddingLeft="20dp" />
            </LinearLayout>
            <LinearLayout
		        android:layout_width="fill_parent"
		    	android:layout_height="wrap_content"
		    	android:orientation="horizontal"
		    	android:layout_alignParentBottom="true" >
		        <TextView
		            android:layout_width="wrap_content"
		            android:layout_height="30dp"
		            android:textColor="#000000"
		            android:text="日  期"
		            android:layout_marginLeft="20dp"
		            android:layout_marginTop="10dp"
		            android:textSize="20dp" />
		        <EditText
		            android:id="@+id/showdate"
		            android:layout_width="fill_parent"
					android:layout_height="40dp"
					android:layout_marginTop="10dp"
					android:layout_marginLeft="10dp"
					android:layout_marginRight="10dp"
					android:hint="2015-01-01"
					android:layout_weight="1"
					android:textSize="20dp"
		            android:textColor="#000000"
		            android:editable="false"
		            android:paddingLeft="20dp" />
		    </LinearLayout>
		    <LinearLayout
		        android:layout_width="fill_parent"
		    	android:layout_height="wrap_content"
		    	android:orientation="horizontal"
		    	android:layout_alignParentBottom="true" >
		        <TextView
		            android:layout_width="wrap_content"
		            android:layout_height="30dp"
		            android:textColor="#000000"
		            android:text="时  间"
		            android:layout_marginLeft="20dp"
		            android:layout_marginTop="10dp"
		            android:textSize="20dp" />
		        <EditText
		            android:id="@+id/showtime"
		            android:layout_width="fill_parent"
					android:layout_height="40dp"
					android:layout_marginTop="10dp"
					android:layout_marginLeft="10dp"
					android:layout_marginRight="10dp"
					android:hint="00:00:00"
					android:layout_weight="1"
					android:textSize="20dp"
		            android:textColor="#000000"
		            android:editable="false"
		            android:paddingLeft="20dp" />
		    </LinearLayout>
		    <LinearLayout
		        android:layout_width="fill_parent"
		    	android:layout_height="fill_parent"
		    	android:orientation="horizontal"
		    	android:layout_alignParentBottom="true" >
		        <!-- 设置运行多行 设置圆角图形 黑色字体
		        	android:lineSpacingExtra设置行间距
		        	android:typeface设置字体
		        	android:paddingLeft设置距离
		         -->
			    <EditText
			        android:id="@+id/editText1"
			        android:layout_height="fill_parent"
			        android:layout_width="fill_parent"
			        android:textColor="#000000"
			        android:layout_margin="20dp"
			        android:textSize="20sp"
			        android:hint="记录旅途中的备注信息..."
			        android:maxLength="500"
			        android:lineSpacingExtra="5dip"
			        android:typeface="sans"
			        android:paddingLeft="20dp"
			        android:paddingRight="20dp"
			       	android:paddingTop="10dp"
			        android:singleLine="false"
			        android:background="@drawable/editview_shape"
			        android:gravity="top" />
		    </LinearLayout>
    	</LinearLayout>
    </RelativeLayout>

</RelativeLayout>

      3.date_dialog.xml文件:日期控件布局

<?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"
    android:padding="10dip" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="请选择日期"
        android:textColor="#000000"
        android:textSize="16sp" /> 

    <DatePicker
        android:id="@+id/date_picker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dip"
        android:layout_gravity="center" >
    </DatePicker> 

</LinearLayout>

      4.time_dialog.xml文件:时间控件布局

<?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"
    android:padding="10dip" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="请选择日期"
        android:textColor="#000000"
        android:textSize="16sp" /> 

    <DatePicker
        android:id="@+id/date_picker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dip"
        android:layout_gravity="center" >
    </DatePicker> 

</LinearLayout>

 
    5.drawable-hdpi中editview_shape.xml文件 实现自定义EditText控件格式

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    android:padding="10dp">
	<!-- 填充editView的颜色 -->
  	<soild android:color="#ffffff"/>
  	<!-- 设置圆角的弧度,radius半径越大,editView的边角越圆 -->
   	<corners
   	    android:radius="15dp"
   	    android:bottomRightRadius="15dp"
   	    android:bottomLeftRadius="15dp"
   	    android:topLeftRadius="15dp"
        android:topRightRadius="15dp"/>
   	<stroke
   	    android:color="#32CD32"
        android:width="4px" />
</shape>

      6.MainActivity.java源码

public class MainActivity extends Activity {

	//自定义变量
	private EditText titleEdit;
	private EditText dateEdit;
	private EditText timeEdit;
	private EditText contentEdit;
	//底部四个布局按钮
	private LinearLayout layoutDate;
	private LinearLayout layoutTime;
	private LinearLayout layoutCancel;
	private LinearLayout layoutSave;
	//定义显示时间控件
	private Calendar calendar; //通过Calendar获取系统时间
	private int mYear;
	private int mMonth;
	private int mDay;
	private int mHour;
	private int mMinute;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //锁定屏幕
      	setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        setContentView(R.layout.activity_main);
        //获取对象
        titleEdit = (EditText) findViewById(R.id.showtitle);
        dateEdit = (EditText) findViewById(R.id.showdate);
		timeEdit = (EditText) findViewById(R.id.showtime);
		contentEdit = (EditText) findViewById(R.id.editText1);
        layoutDate = (LinearLayout) findViewById(R.id.layout_date);
		layoutTime = (LinearLayout) findViewById(R.id.layout_time);
		layoutCancel = (LinearLayout) findViewById(R.id.layout_cancel);
		layoutSave = (LinearLayout) findViewById(R.id.layout_save);

		calendar = Calendar.getInstance();

		//点击"日期"按钮布局 设置日期
		layoutDate.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {

				//通过自定义控件AlertDialog实现
				AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
				View view = (LinearLayout) getLayoutInflater().inflate(R.layout.date_dialog, null);
				final DatePicker datePicker = (DatePicker) view.findViewById(R.id.date_picker);
				//设置日期简略显示 否则详细显示 包括:星期\周
				datePicker.setCalendarViewShown(false);
				//初始化当前日期
				calendar.setTimeInMillis(System.currentTimeMillis());
				datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
						calendar.get(Calendar.DAY_OF_MONTH), null);
				//设置date布局
				builder.setView(view);
				builder.setTitle("设置日期信息");
				builder.setPositiveButton("确  定", new DialogInterface.OnClickListener() {
	                    @Override
	                    public void onClick(DialogInterface dialog, int which) {
	                    	//日期格式
	                        StringBuffer sb = new StringBuffer();
	                        sb.append(String.format("%d-%02d-%02d",
	                                datePicker.getYear(),
	                                datePicker.getMonth() + 1,
	                                datePicker.getDayOfMonth()));
	                        dateEdit.setText(sb);
	                        //赋值后面闹钟使用
	                        mYear = datePicker.getYear();
							mMonth = datePicker.getMonth();
							mDay = datePicker.getDayOfMonth();
	                        dialog.cancel();
	                    }
	            });
				builder.setNegativeButton("取  消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    	dialog.cancel();
                    }
				});
				builder.create().show();
			}
		});
		layoutDate.setOnTouchListener(new OnTouchListener() { //设置布局背景
			@Override
		    public boolean onTouch(View v, MotionEvent event) {
		        if(event.getAction() == MotionEvent.ACTION_DOWN)  {
		        	layoutDate.setBackgroundColor(Color.WHITE);
		        	layoutTime.setBackgroundColor(Color.TRANSPARENT);
		        	layoutCancel.setBackgroundColor(Color.TRANSPARENT);
		        	layoutSave.setBackgroundColor(Color.TRANSPARENT);
		        }
		        return false;
			}
		});

		//点击"时间"按钮布局 设置时间
		layoutTime.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				//自定义控件
				AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
				View view = (LinearLayout) getLayoutInflater().inflate(R.layout.time_dialog, null);
				final TimePicker timePicker = (TimePicker) view.findViewById(R.id.time_picker);
				//初始化时间
				calendar.setTimeInMillis(System.currentTimeMillis());
				timePicker.setIs24HourView(true);
		        timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
		        timePicker.setCurrentMinute(Calendar.MINUTE);
				//设置time布局
				builder.setView(view);
				builder.setTitle("设置时间信息");
				builder.setPositiveButton("确  定", new DialogInterface.OnClickListener() {
	                    @Override
	                    public void onClick(DialogInterface dialog, int which) {
	                    	mHour = timePicker.getCurrentHour();
	                    	mMinute = timePicker.getCurrentMinute();
	                    	//时间小于10的数字 前面补0 如01:12:00
	                    	timeEdit.setText(new StringBuilder().append(mHour < 10 ? "0" + mHour : mHour).append(":")
					.append(mMinute < 10 ? "0" + mMinute : mMinute).append(":00") );
	                        dialog.cancel();
	                    }
	            });
				builder.setNegativeButton("取  消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    	dialog.cancel();
                    }
				});
				builder.create().show();
			}
		});
		layoutTime.setOnTouchListener(new OnTouchListener() { //设置布局背景
			@Override
		    public boolean onTouch(View v, MotionEvent event) {
		        if(event.getAction() == MotionEvent.ACTION_DOWN)  {
		        	layoutDate.setBackgroundColor(Color.TRANSPARENT);
		        	layoutTime.setBackgroundColor(Color.WHITE);
		        	layoutCancel.setBackgroundColor(Color.TRANSPARENT);
		        	layoutSave.setBackgroundColor(Color.TRANSPARENT);
		        }
		        return false;
			}
		});

		//点击"取消"按钮
		layoutCancel.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				dateEdit.setText("");
				dateEdit.setHint("2015-01-01");
				timeEdit.setText("");
				timeEdit.setHint("00:00:00");
				contentEdit.setText("");
				contentEdit.setHint("记录旅途中的备注信息...");
			}
		});
		layoutCancel.setOnTouchListener(new OnTouchListener() { //设置布局背景
			@Override
		    public boolean onTouch(View v, MotionEvent event) {
		        if(event.getAction() == MotionEvent.ACTION_DOWN)  {
		        	layoutDate.setBackgroundColor(Color.TRANSPARENT);
		        	layoutTime.setBackgroundColor(Color.TRANSPARENT);
		        	layoutCancel.setBackgroundColor(Color.WHITE);
		        	layoutSave.setBackgroundColor(Color.TRANSPARENT);
		        }
		        return false;
			}
		});

		//点击"保存"按钮
		layoutSave.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {

				//确认保存按钮
				new AlertDialog.Builder(MainActivity.this).setTitle("确认保存吗?")
	            .setIcon(android.R.drawable.ic_dialog_info)
	            .setPositiveButton("确  定", new DialogInterface.OnClickListener() {
	                @Override
	                public void onClick(DialogInterface dialog, int which) { 

	                	/**
	            		 * 数据库插入操作
	            		 */

	                }

	            })
	            .setNegativeButton("返  回", new DialogInterface.OnClickListener() {
	                @Override
	                public void onClick(DialogInterface dialog, int which) { 

	                }
	            }).show();
			}
		});
		layoutSave.setOnTouchListener(new OnTouchListener() { //设置布局背景
			@Override
		    public boolean onTouch(View v, MotionEvent event) {
		        if(event.getAction() == MotionEvent.ACTION_DOWN)  {
		        	layoutDate.setBackgroundColor(Color.TRANSPARENT);
		        	layoutTime.setBackgroundColor(Color.TRANSPARENT);
		        	layoutCancel.setBackgroundColor(Color.TRANSPARENT);
		        	layoutSave.setBackgroundColor(Color.WHITE);
		        }
		        return false;
			}
		});

	} // End onCreate

}

      最后希望文章对大家有所帮助!如果你知道我这篇文章想要阐述的内容是什么?为什么要写这篇文章?或许它会对你有所帮助,一方面是布局可能对你有启发;另一方面就是刚好遇到那个问题的同学。
      在点击“保存”按钮时,也可把数据存储至数据库中调用MySQLiteOpenHelper,这里就不再介绍。写着写着就到了凌晨5点了,程序猿生活还是要改下啊~自己保重自己的身体吧!期待改正自己的作息,难难难~
      (By:Eastmount 2015-1-7 凌晨5点  http://blog.csdn.net/eastmount/

时间: 2025-01-19 10:36:51

[android] 解决DatePickerDialog和TimePickerDialog控件取消按钮问题的相关文章

Android 实现IOS 滚轮选择控件的实例(源码下载)

Android 实现IOS 滚轮选择控件的实例 最近根据项目需要,整理了一个相对比较全面的 WheelView 使用控件,借用之前看到的一句话来说,就是站在巨人肩膀上,进行了一些小调整. 这里先贴上效果图 一般常用的时间选择格式,,单项选择,以及城市联动,这里基本都可以满足了. 这里把 单项选择,和 日期时间选择 给提出到 Util 类中,代码如下: public class Util { /** * 时间选择回调 */ public interface TimerPickerCallBack

如何解决浏览器阻止activex控件运行

  1.打开浏览器,在菜单栏上选择"工具"选项,在弹出的下拉页面选择"Internet选项". 2.打开Internet选项的窗口后,在属性页面里找到安全选项卡,选择自定义级别. 3.打开安全设置窗口,将最底下重置为一栏的安全级别选择"安全级-中",勾选下载已签名的Activex控件一栏的启用,再勾选运行Activex控件和插件一栏的启用,然后单击确定按钮. 再重新启用浏览器,是不是发现可以任意观看视频,并没有浏览器阻止activex控件的情况了

Android编程开发之Spinner控件用法实例分析_Android

本文实例讲述了Android编程开发之Spinner控件用法.分享给大家供大家参考,具体如下: 下拉列表 Spinner,Spinner是一个每次只能选择所有项的一个项的控件.它的项来自于与之相关联的适配器中. Spinner的使用,可以极大提高用户的体验性.当需要用户选择的时候,可以提供一个下拉列表将所有可选的项列出来.供用户选择. 一.使用数组作为数据源 布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/ap

控件的使用-android开发中使用Spinner控件遇到了一个问题

问题描述 android开发中使用Spinner控件遇到了一个问题 我的本意是使用Spinner下拉列表,当点这个控件的时候,下拉列表中的选项是图片,我用Bitmap这个类型加入了list三个选项,下面是我的代码: public class SpinnerView extends Activity { private Spinner spinner; private Bitmap tp,cp,sp; private ArrayAdapter adapter; protected void onC

Android高效率编码-细节,控件,架包,功能,工具,开源汇总,你想要的这里都有

Android高效率编码-细节,控件,架包,功能,工具,开源汇总 其实写博客的初衷也并不是说什么分享技术,毕竟咱还只是个小程序员,最大的目的就是对自我的知识积累,以后万一编码的时候断片了,也可以翻出来看看,这样子对自己也有好处,所以今天就汇总一下一些需要的东西.多图来了,加油! 一.游戏 小熊打字,我刚接触电脑练习打字的时候用到的 下载地址:http://download.csdn.net/detail/qq_26787115/9365721 二.色彩 这张颜色表上的颜色都太赞了 三.控件 1.

Android开发中给EditText控件添加TextWatcher监听实现对输入字数的限制(推荐)_Android

 做这个功能是因为开发项目的时候,由于后台接口的一些参数的值的长度有要求,不能超过多少个字符,所以在编辑框中输入的字符是要有限制的. 下面就来看一下demo的实现过程: 首先,在xml控件中放置一个EditText控件,然后初始化该控件并对该控件添加文本监听.xml自己简单的设计一下,代码较为简单,直接上代码: package com.example.edittext; import android.app.Activity; import android.os.Bundle; import a

Android开发技巧之ViewStub控件惰性装载_Android

在4.5.6节介绍过一个<include>标签,该标签可以在布局文件中引用另外一个布局文件,并可以覆盖被引用布局文件根节点所有与布局相关的属性,也就是以android:layout开头的属性.通过<include>标签可以将一个非常庞大的布局文件分解成若干个较小的布局文件,而且这些小的布局文件也可以被多次引用,从而达到一个重用的目的. <include>标签固然很好用,但有一个问题,就是布局文件中的控件并不一定在程序启动时全都用到,有一些控件只在特定的情况下才会被使用到

Android编程开发之TextView控件用法(2种方法)_Android

本文实例讲述了Android编程开发之TextView控件用法.分享给大家供大家参考,具体如下: 这里我们会讲讲常用控件的使用. 在今后的大多数章节里面也是一样的,我们会具体的说说某些控件的用法.因为只要把这些控件组合在一起它们就是一个应用了. 好吧我们直接看看这个控件怎么用. 细心的同学会发现,其实这个控件的内容是定义在values文件夹里面的strings.xml中的. 那么我们只需要给它加一段代码: 复制代码 代码如下: <string name="test">Wel

总结Android中MD风格相关控件_Android

要使用MD风格控件,首先需要在Gradle中加入Support Design Library,例如: compile 'com.android.support:design:24.1.1' 一.CoordinatorLayout 1.CoordinatorLayout + AppBarLayout 布局文件代码如下: <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.