Android 输入控件

2025-01-05|版权声明|我要投稿

Android 输入控件(2篇)

1.Android 输入控件 篇一

在Phone7中主要的输入控件其实就有两个,一个是textbox,另一个就是password控件,这两个控件中尤其是TextBox控件有了很多新特性。

一.PasswordBox:密码框控件,用于输入自定义的遮罩字符的输入控件。

 

 

PasswordChar:设置密码显示字符。

二.TextBox:输入框控件。

Text:设置或获取所要输入的文字。

IsReadOnly:设置是否允许输入。

SelectionBackground:设置输入框中选中文字的背景色。

SelectionForground:设置输入框中选中文字的字色。

SelectedText:获取输入框中被选中的文字。可以用在SelectionChanged事件中。

InputScope:可以让软键盘产生不同的键面效果,以利于输入。

也可以这样设置:

 

以下是这个属性支持的Scope列表:

1.AddressCity

2.AddressCountryName

3.AddressCountryShortName

4.AddressStateOrProvince

5.AddressStreet

6.AlphanumericFullWidth

7.AlphanumericHalfWidth

8.ApplicationEnd

9.Bopomofo

10.Chat

11.CurrencyAmount

12.CurrencyAmountAndSymbol

13.CurrencyChinese

14.Date

15.DateDay

16.DateDayName

17.DateMonth

18.DateMonthName

19.DateYear

20.Default

21.Digits

22.EmailNameOrAddress

23.EmailSmtpAddress

24.EmailUserName

25.EnumString

26.FileName

27.FullFilePath

28.Hanja

29.Hiragana

30.KatakanaFullWidth

31.KatakanaHalfWidth

32.LogOnName

33.Maps

34.NameOrPhoneNumber

35.Number

36.NumberFullWidth

37.OneChar

38.Password

39.PersonalFullName

40.PersonalGivenName

41.PersonalMiddleName

42.PersonalNamePrefix

43.PersonalNameSuffix

44.PersonalSurname

45.PhraseList

46.PostalAddress

47.PostalCode

48.Private

49.RegularExpression

50.Search

51.Srgs

52.TelephoneAreaCode

53.TelephoneCountryCode

54.TelephoneLocalNumber

55.TelephoneNumber

56.Text

57.Time

58.TimeHour

59.TimeMinorSec

60.Url

61.Xml

62.Yomi

可以通过代码来获取上面的列表:

FieldInfo[] array = typeof(InputScopeNameValue).GetFields(BindingFlags.Public | BindingFlags.Static);

Text:软键盘增加了联想输入

TelephoneNumber:键面全部为数字显示,

Url: 键面显示.com。

2.Android 输入控件 篇二

TextView控件在Android开发中应 用比较广 泛,只要有文本显示要求时,通常都会用到它。但是TexwView控件并不十分完美,它在显示文本时,特别是有中西文混合文本时,往往显得参差不齐、不够工整,影响了排版效果,不能满足“两端对齐”这一中文显示的基本要求。Android实现文本两端对齐显示的基本方法有3种:1将文本转换为html格式,用WebView控件显示;2弃用TexwView控件,重新实现一个具有两端对齐功能的新控件;3在TexwView控件的基础上,扩展实现两端对齐功能。第一种方法需要在文本显示前把文本转换为html格式,这需要程序员对html格式相当熟悉;第二种方法是重新实现一个文本显示控件,需要对Android控件的实现机理有深入研究[1],对程序员的能力要求比较高;第三种方法相对简单,只需在现有控件的基础上,覆盖文本输出方法。本文采用第三种方法,即扩展TextView控件功能。

1TextView控件机理

要扩展TextView控件功能,首先要对TextView控件的实现机理有 一定了解。Android的每一个 控件虽然实现起来相当复杂,但除了具体实现细节外,几乎所有的可视控件都包 含两个要 素:一个是与 用户的交 互界面(UI),另一个是与用户交互的用户输入事件。TextView作为Android的一个基础控件也不例外,用户界面是通过在画布上绘制UI,用户主要是键盘输入以及触摸屏输入。因此,分析TextView控件的机理就是要搞清控件界面的绘制框架及其输 入过程。本文 主要关注TextView控件的界面绘制步骤。控件的UI绘制操作通常分为3步,分别是测量、布局和绘制。

1.1测量

对于一个可视控件,必须确定其所占空间的大小,所以TextView要重写父 类View的成员函 数onMeasure。该函数有两个 参数,分别是用 来描述宽 度测量规 范的widthMeasureSpec和高度测 量规范的heightMeasureSpec。测量规范使用1个int值来表示,这个int值包含了2个分量。第1个是mode分量,使用最高2位来表示。测量 模式有3种,分别是MeasureSpec.UNSPECIFIED(0)、MeasureSpec.EXACTLY(1)和MeasureSpec.AT_MOST(2);第2个是size分量,使用低30位来表示。当mode分量等于MeasureSpec.EXACTLY时,size分量的值就是 父视图设 置的宽度 或者高度;当mode分量等于MeasureSpec.AT_MOST时,size分量的值就是父视图限定当前控件设置的最大宽度或者高度;当mode分量等于MeasureSpec.UNSPECIFIED时,父视图不限定当前控件所设置的宽度或者高度,这时候当前控件就按照实际需求来设置宽度和高度。

1.2布局

通过测量后确定了控件的大小,但是控件的位置还未确定。控件的位置是通过布局这 个操作来 完成的。Android可视控件是按照树形结构组织在一起的,其中,子控件的位置由父控件来设置,也就是说,只有容器类控件才执行布局操作,通过重写父类View的成员函数onLayout来实现。由于TextView控件不是 容器类控 件,因此,它可以不重写父类View的成员函数onLayout。

1.3绘制

经过测量和布局操作后,就确定了控件TextView的大小和位置,接下来绘制UI。控件为了绘制UI,必须重写父类View的成员函数onDraw。该函数只有一个参数canvas,canvas描述的是一块画布,控件的UI就是绘制在这块画布上的。画布提供了丰富的接口来绘制UI,例如画线(drawLine)、画圆(drawCircle)、输出文字(drawText)和贴图(drawBitmap)等等。有了这些UI画图接口之后,就可以随心所欲地绘制控件的UI了。

通过分析TextView控件的机 理,不难发现,TextView对文本的显示是通过在画布(canvas)上输出文本实现的。因此要在TextView的基础上 实现文本 的两端对齐,关键是要重新安排每一行的字符数,控制字间距,在TextView的画布(canvas)上精确地 输出每一 个字符,从而确保每一行的第一个字符和最后一个字符是对齐的。

2扩展 TextView设计

2.1两端对齐显示的基本要求

要实现文本的两端对齐,表面上是每行的最后一个字符在纵坐标上保持一致,其实还要考虑文本在显示格式上的要求,特别是每一行的第一个字符(行首)和最后一个字符(行尾)是否符合格式规范。需要考虑的格式规范要求有:1行首字符不能是以下字符:句号(。.)、问号(??)、叹号(!!)、逗号(,,)、冒号(::)和分号(;;)和引号(””)、括号())]})、书名号(》>)的后一半等;2行尾字符不能是以下字符:引号(“”)、括号((([{)、书名号(《<)的前一半。

2.2ExTextView设计[2]

ExTextView继承了Android的TextView,其继承关系如图1所示,ExTextView的类图如图2所示。

ExTextView主要的属 性包括文 本高度 (m _iTextHeight)、文本宽度(m_iTextWidth)、画笔(mPaint)、文本(text)、行间距(LineSpace)、左边距(left_Margin)、右边距(right_Margin)、上边距(top_Margin)、下边距(bottom_Margin)、字体高度 (m_iFontHeight)、所有行属 性(strings)。

其中,描述行属性的内部类Tlineattr包含3个成员,分别是该行所包含的字符串(linetext)、该行的字间距(extrawidth)和该行每一个字符的输出宽度(widths)。

ExTextView的机理是:确定每一 行字符属 性的IniLines()方法和覆盖父类的OnDraw()方法。IniLines()方法主要是确定第一行所包含的字符,保证行首字符和行尾字符符合格式规范的要求,其判断逻辑如图3所示。OnDraw()方法主要是根据每一行所包含的字符,确定字间距,保证所有行首字符的水平坐标值一致,所有行尾字符的水平坐标值一致,操作流程如图4所示。

3扩展 TextView实现

3.1主要代码

ExTextView要能够实现两端对齐,其核心是先要分配每一行的字符,然后重写父类的成员函数onDraw ()。

分配字符的方法IniLines()实现如下:

3.2应用实例

ExTextView控件的使用与TextView控件的使用是一样的,这里不作 详细介绍。对 于同一段 文本,图5是Android自带的TextView显示效果,图6是ExTextView的显示效果。

4结语

具有两端对齐功能的ExTextView控件,还不十分完善。比如,为防止英文单词被截断,需要加上中英文混合分词技术,等等。本文只是提供了扩展TextView功能一种思路,读者可以沿着这种思路不断扩展,实现所需功能。

摘要:Android自带的文本显示控件TextView往往难以满足排版要求。以两端对齐排版要求为例,实现能够两端对齐的文本显示控件ExTextView,为扩展TextView功能提供了方法和思路。

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:iwenmi@163.com

上一篇:交通局长扶贫工作先进个人事迹下一篇:话题作文:爱无处不在

付费复制
学术范例网10年专业运营,值得您的信赖

限时特价:7.99元/篇

原价:20元
微信支付
已付款请点这里联系客服
欢迎使用微信支付
扫一扫微信支付
微信支付:
支付成功
已获得文章复制权限
确定
常见问题