系出名门Android(6) - 控件(View)之DatePicker, TimePicker, ToggleButton, EditText, ProgressBar

简介:
[索引页]
[源码下载]


系出名门Android(6) - 控件(View)之DatePicker, TimePicker, ToggleButton, EditText, ProgressBar, SeekBar, AutoCompleteTextView, MultiAutoCompleteTextView


作者: webabcd


介绍
在 Android 中使用各种控件(View)
  • DatePicker - 日期选择控件
  • TimePicker - 时间选择控件
  • ToggleButton - 双状态按钮控件
  • EditText - 可编辑文本控件
  • ProgressBar - 进度条控件
  • SeekBar - 可拖动的进度条控件
  • AutoCompleteTextView - 支持自动完成功能的可编辑文本控件
  • MultiAutoCompleteTextView - 支持自动完成功能的可编辑文本控件,允许输入多值(多值之间会自动地用指定的分隔符分开)


1、DatePicker 的 Demo
datepicker.xml 
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  
          
        <!--  
                DatePicker - 日期选择控件 
        
-->  
         < DatePicker   android:id ="@+id/datePicker"  
                 android:layout_width ="wrap_content"   android:layout_height ="wrap_content" >  
         </ DatePicker >  
          
</ LinearLayout >
 
_DatePicker.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.os.Bundle;  

public   class  _DatePicker   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.datepicker);  

                 // 具体的应用可参见对话框中的示例 
                setTitle( "DatePicker");  
        }  
}
 
 
2、TimePicker 的 Demo
timepicker.xml
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  
          
        <!--  
                TimePicker - 时间选择控件 
        
-->  
         < TimePicker   android:id ="@+id/timePicker"  
                 android:layout_width ="wrap_content"   android:layout_height ="wrap_content" >  
         </ TimePicker >  
          
</ LinearLayout >
 
_TimePicker.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.os.Bundle;  

public   class  _TimePicker   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.timepicker);  

                 // 具体的应用可参见对话框中的示例 
                setTitle( "TimePicker");  
        }  
}
 
 
3、ToggleButton 的 Demo
togglebutton.xml
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  
          
         < TextView   android:layout_width ="fill_parent"  
                 android:layout_height ="wrap_content"   android:id ="@+id/textView"   />  
                  
        <!--     
                ToggleButton - 双状态按钮控件 
                        textOn - 当按钮状态为 true 时所显示的文本 
                        textOff - 当按钮状态为 false 时所显示的文本 
        
-->  
         < ToggleButton   android:id ="@+id/toggleButton"  
                 android:layout_width ="wrap_content"   android:layout_height ="wrap_content"  
                 android:textOn ="关闭"   android:textOff ="打开"   />  
                  
</ LinearLayout >
 
_ToggleButton.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.os.Bundle;  
import  android.view.View;  
import  android.widget.Button;  
import  android.widget.TextView;  
import  android.widget.ToggleButton;  

public   class  _ToggleButton   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.togglebutton);  

                setTitle( "ToggleButton");  
                  
                 final  ToggleButton btn = (ToggleButton)   this.findViewById(R.id.toggleButton);  
                 // setOnClickListener() - 响应按钮的鼠标单击事件 
                btn.setOnClickListener( new  Button.OnClickListener(){  
                        @Override  
                         public   void  onClick(View v) {  
                                TextView txt = (TextView) _ToggleButton. this.findViewById(R.id.textView);  
                                 // ToggleButton.isChecked() - 双状态按钮的按钮状态 
                                txt.setText( "按钮状态:"  + String.valueOf(btn.isChecked()));  
                        }  
                });  
        }  
}
 
 
4、EditText 的 Demo
edittext.xml
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  
          
        <!--  
                EditText - 可编辑文本控件 
        
-->  
         < EditText   android:id ="@+id/editText"   android:layout_width ="fill_parent"  
                 android:layout_height ="wrap_content" >  
         </ EditText >  
          
</ LinearLayout >
 
_EditText.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.os.Bundle;  
import  android.widget.EditText;  

public   class  _EditText   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.edittext);  

                setTitle( "EditText");  
                  
                EditText txt = (EditText)   this.findViewById(R.id.editText);  
                txt.setText( "我可编辑");  
        }  
}
 
 
5、ProgressBar 的 Demo
progressbar.xml
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  

        <!--  
                ProgressBar - 进度条控件 
        
-->  

        <!-- 以下分别为大、中、小的进度条控件(圆圈状)-->  
         < ProgressBar   android:id ="@+android:id/progress_large"  
                 style ="?android:attr/progressBarStyleLarge"   android:layout_width ="wrap_content"  
                 android:layout_height ="wrap_content"   />  
         < ProgressBar   android:id ="@+android:id/progress"  
                 android:layout_width ="wrap_content"   android:layout_height ="wrap_content"   />  
         < ProgressBar   android:id ="@+android:id/progress_small"  
                 style ="?android:attr/progressBarStyleSmall"   android:layout_width ="wrap_content"  
                 android:layout_height ="wrap_content"   />  

        <!--  
                进度条控件(条状)的演示 
                        style - 进度条的样式,本例使用内置样式 
                        max - 进度的最大值 
                        progress - 第一进度位置 
                        secondaryProgress - 第二进度位置 
        
-->  
         < ProgressBar   android:id ="@+id/progress_horizontal"  
                 style ="?android:attr/progressBarStyleHorizontal"   android:layout_width ="200px"  
                 android:layout_height ="wrap_content"   android:max ="100"  
                 android:progress ="50"   android:secondaryProgress ="75"   />  

</ LinearLayout >
 
_ProgressBar.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.os.Bundle;  
import  android.view.Window;  


// 另见对话框中的进度条 
public   class  _ProgressBar   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);                  
                  
                 // 设置特性以允许在应用程序的标题栏上显示进度条(条状) 
                requestWindowFeature(Window.FEATURE_PROGRESS);  
                 // 设置特性以允许在应用程序的标题栏上显示进度条(圆圈状) 
                requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);  

                 this.setContentView(R.layout.progressbar);  

                setTitle( "ProgressBar");  
                  
                 // 在标题栏上显示进度条(条状) 
                setProgressBarVisibility( true);  
                 // 在标题栏上显示进度条(圆圈状) 
                setProgressBarIndeterminateVisibility( true);  
                  
                 // 指定进度条的进度 
                setProgress(50 * 100);  
                setSecondaryProgress(75 * 100);  
        }  
}
 
 
6、SeekBar 的 Demo
seekbar.xml 
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  
          
        <!--  
                SeekBar - 可拖动的进度条控件 
                        max - 进度的最大值 
                        progress - 第一进度位置 
                        secondaryProgress - 第二进度位置 
        
-->  
         < SeekBar   android:id ="@+id/seekBar"   android:layout_width ="fill_parent"  
                 android:layout_height ="wrap_content"   android:max ="100"  
                 android:progress ="50"   android:secondaryProgress ="75"   />  

         < TextView   android:id ="@+id/progress"   android:layout_width ="fill_parent"  
                 android:layout_height ="wrap_content"   />  

         < TextView   android:id ="@+id/tracking"   android:layout_width ="fill_parent"  
                 android:layout_height ="wrap_content"   />  

</ LinearLayout >
 
_SeekBar.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.os.Bundle;  
import  android.widget.SeekBar;  
import  android.widget.TextView;  

public   class  _SeekBar   extends  Activity   implements  
                SeekBar.OnSeekBarChangeListener {  

        SeekBar mSeekBar;  
        TextView mProgressText;  
        TextView mTrackingText;  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.seekbar);  

                setTitle( "SeekBar");  

                mSeekBar = (SeekBar) findViewById(R.id.seekBar);  
                 // setOnSeekBarChangeListener() - 响应拖动进度条事件 
                mSeekBar.setOnSeekBarChangeListener( this);  
                  
                mProgressText = (TextView) findViewById(R.id.progress);  
                mTrackingText = (TextView) findViewById(R.id.tracking);  
        }  

         // 拖动进度条后,进度发生改变时的回调事件 
         public   void  onProgressChanged(SeekBar seekBar,   int  progress,  
                         boolean  fromTouch) {  
                mProgressText.setText(progress +   "%");  
        }  

         // 拖动进度条前开始跟踪触摸 
         public   void  onStartTrackingTouch(SeekBar seekBar) {  
                mTrackingText.setText( "开始跟踪触摸");  
        }  

         // 拖动进度条后停止跟踪触摸 
         public   void  onStopTrackingTouch(SeekBar seekBar) {  
                mTrackingText.setText( "停止跟踪触摸");  
        }  

}
 
 
7、AutoCompleteTextView 的 Demo
autocompletetextview.xml
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  

        <!--  
                AutoCompleteTextView - 支持自动完成功能的可编辑文本控件 
        
-->  
         < AutoCompleteTextView   android:id ="@+id/editText"  
                 android:layout_width ="fill_parent"   android:layout_height ="wrap_content"   />  

</ LinearLayout >
 
_AutoCompleteTextView.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.os.Bundle;  
import  android.widget.ArrayAdapter;  
import  android.widget.AutoCompleteTextView;  

public   class  _AutoCompleteTextView   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 super.onCreate(savedInstanceState);  
                setContentView(R.layout.autocompletetextview);  

                setTitle( "AutoCompleteTextView");  
                  
                 // 实例化适配器,指定显示格式及数据源 
                ArrayAdapter<String> adapter =   new  ArrayAdapter<String>(  
                                 this,  
                                android.R.layout.simple_dropdown_item_1line,    
                                ary);  
                AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.editText);  
                 // 指定自动完成控件的适配器 
                textView.setAdapter(adapter);  
        }  

         // 自动完成控件的所需数据的数据源 
         private  String[] ary =   new  String[] {  
                 "abc",  
                 "abcd",  
                 "abcde",  
                 "abcdef",  
                 "abcdefg",  
                 "hij",  
                 "hijk",  
                 "hijkl",  
                 "hijklm",  
                 "hijklmn",  
        };  
}
 
 
8、MultiAutoCompleteTextView 的 Demo
multiautocompletetextview.xml
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  

        <!--  
                MultiAutoCompleteTextView - 支持自动完成功能的可编辑文本控件,允许输入多值(多值之间会自动地用指定的分隔符分开) 
        
-->  
         < MultiAutoCompleteTextView   android:id ="@+id/editText"  
                 android:layout_width ="fill_parent"   android:layout_height ="wrap_content"   />  

</ LinearLayout >
 
_MultiAutoCompleteTextView.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.os.Bundle;  
import  android.widget.ArrayAdapter;  
import  android.widget.MultiAutoCompleteTextView;  

public   class  _MultiAutoCompleteTextView   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 super.onCreate(savedInstanceState);  
                setContentView(R.layout.multiautocompletetextview);  

                setTitle( "MultiAutoCompleteTextView");  
                  
                 // 实例化适配器,指定显示格式及数据源 
                ArrayAdapter<String> adapter =   new  ArrayAdapter<String>(  
                                 this,  
                                android.R.layout.simple_dropdown_item_1line,    
                                ary);  
                MultiAutoCompleteTextView textView = (MultiAutoCompleteTextView) findViewById(R.id.editText);  
                textView.setAdapter(adapter);  
                  
                 // 设置多个值之间的分隔符,此处为逗号 
                textView.setTokenizer( new  MultiAutoCompleteTextView.CommaTokenizer());  
        }  

         // 自动完成控件的所需数据的数据源 
         private  String[] ary =   new  String[] {  
                 "abc",  
                 "abcd",  
                 "abcde",  
                 "abcdef",  
                 "abcdefg",  
                 "hij",  
                 "hijk",  
                 "hijkl",  
                 "hijklm",  
                 "hijklmn",  
        };  
}
 
 


     本文转自webabcd 51CTO博客,原文链接: http://blog.51cto.com/webabcd/342063 ,如需转载请自行联系原作者


目录
打赏
0
0
0
0
347
分享
相关文章
安卓应用开发中的自定义View组件
【10月更文挑战第5天】在安卓应用开发中,自定义View组件是提升用户交互体验的利器。本篇将深入探讨如何从零开始创建自定义View,包括设计理念、实现步骤以及性能优化技巧,帮助开发者打造流畅且富有创意的用户界面。
163 0
Android:UI:Drawable:View/ImageView与Drawable
通过本文的介绍,我们详细探讨了Android中Drawable、View和ImageView的使用方法及其相互关系。Drawable作为图像和图形的抽象表示,提供了丰富的子类和自定义能力,使得开发者能够灵活地实现各种UI效果。View和ImageView则通过使用Drawable实现了各种图像和图形的显示需求。希望本文能为您在Android开发中使用Drawable提供有价值的参考和指导。
70 2
安卓开发中自定义View的实现与性能优化
【10月更文挑战第28天】在安卓开发领域,自定义View是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何高效地创建和管理自定义View,以及如何通过代码和性能调优来确保流畅的交互体验。我们将一起学习自定义View的生命周期、绘图基础和事件处理,进而探索内存和布局优化技巧,最终实现既美观又高效的安卓界面。
74 5
在 Android 中使用 RxJava 更新 View
【10月更文挑战第20天】使用 RxJava 来更新 View 可以提供更优雅、更高效的解决方案。通过合理地运用操作符和订阅机制,我们能够轻松地处理异步数据并在主线程中进行 View 的更新。在实际应用中,需要根据具体情况进行灵活运用,并注意相关的注意事项和性能优化,以确保应用的稳定性和流畅性。可以通过不断的实践和探索,进一步掌握在 Android 中使用 RxJava 更新 View 的技巧和方法,为开发高质量的 Android 应用提供有力支持。
Android 在子线程更新 View
【10月更文挑战第21天】在 Android 开发中,虽然不能直接在子线程更新 View,但通过使用 Handler、AsyncTask 或 RxJava 等方法,可以实现子线程操作并在主线程更新 View 的目的。在实际应用中,需要根据具体情况选择合适的方法,并注意相关的注意事项和性能优化,以确保应用的稳定性和流畅性。可以通过不断的实践和探索,进一步掌握在子线程更新 View 的技巧和方法,为开发高质量的 Android 应用提供支持。
80 2
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
45 2
Android View的绘制流程和原理详细解说
Android View的绘制流程和原理详细解说
85 3
安卓应用开发中的自定义View组件
【10月更文挑战第5天】自定义View是安卓应用开发的一块基石,它为开发者提供了无限的可能。通过掌握其原理和实现方法,可以创造出既美观又实用的用户界面。本文将引导你了解自定义View的创建过程,包括绘制技巧、事件处理以及性能优化等关键步骤。
|
6月前
|
Android中SurfaceView的双缓冲机制和普通View叠加问题解决办法
本文介绍了 Android 平台上的 SurfaceView,这是一种高效的图形渲染控件,尤其适用于视频播放、游戏和图形动画等场景。文章详细解释了其双缓冲机制,该机制通过前后缓冲区交换来减少图像闪烁,提升视觉体验。然而,SurfaceView 与普通 View 叠加时可能存在 Z-Order 不一致、同步问题及混合渲染难题。文中提供了使用 TextureView、调整 Z-Order 和创建自定义组合控件等多种解决方案。
268 9

热门文章

最新文章

  • 1
    Android历史版本与APK文件结构
    15
  • 2
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    18
  • 3
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    15
  • 4
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    4
  • 5
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    2
  • 6
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    7
  • 7
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    4
  • 8
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    2
  • 9
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    12
  • 10
    Android实战经验之Kotlin中快速实现MVI架构
    9
  • 1
    android FragmentManager 删除所有Fragment 重建
    18
  • 2
    Android实战经验之Kotlin中快速实现MVI架构
    31
  • 3
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    36
  • 4
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    43
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    147
  • 6
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    47
  • 7
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    59
  • 8
    Android历史版本与APK文件结构
    164
  • 9
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    48
  • 10
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    42
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等