我有一个TextView对象,其目的是键入一个人的名字。我看着here,发现textPersonName
是一种输入类型。所以我选择了那种输入类型,认为它可以做我想要的。
但是,此输入类型不会将第一个字母大写。由于人们的名字以大写字母开头,我发现这很奇怪。这是故意的,还是Google的设计疏忽?
在任何情况下,我都选择textCapWords
作为新的输入类型,以确保每个单词开始大写。将此输入类型用于某个人的名字会有任何不利之处吗?使用textPersonName
作为输入类型有什么好处?
您可以使用|
(或)运算符组合inputType属性。
http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType
放置在文本字段中的数据类型,用于帮助输入方法决定如何让用户输入文本。这里的常量对应于InputType定义的常量。通常,您可以选择单个值,但有些值可以按指示组合在一起。将此属性设置为除none之外的任何内容也意味着文本是可编辑的。
必须是以下常量值中的一个或多个(由“|”分隔)。
因此,要结合使用textPersonName
和textCapWords
的优点,只需使用以下语法设置输入类型:
android:inputType="textPersonName|textCapWords"
这个answer简要说明了使用textPersonName作为名称输入字段的好处。
inputype
小部件中的EditText
属性:(在Android 4.4.3和2.3.3上测试)
<EditText android:id="@+id/et_test" android:inputType="?????"/>
注意:Auto-capitalization
设置将更改默认行为。
注2:在Numeric keyboard
中,所有数字均为英语1234567890。
注3:Correction/Suggestion
设置会覆盖默认行为。
在任何情况下,我都选择textCapWords作为新的输入类型,以确保每个单词开始大写。将此输入类型用于某个人的名字会有任何不利之处吗?
这里似乎没有任何问题,因为你只需更改输入类型,将其指定为Capital的首字母,但它将允许输入多行。当您只需要一行带有人名时,这可能是一个缺点。
使用textPersonName作为输入类型有什么好处?
文本字段中的单行条目是将文本输入用作textPerson的优势。
public class MainActivity extends Activity {
TextView tv1;
EditText et1;
Button bt1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1=(TextView)findViewById(R.id.textView1);
et1=(EditText)findViewById(R.id.editText1);
bt1=(Button)findViewById(R.id.button1);
bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String s=et1.getText().toString();
//char s1=s.charAt(0);
if (s.length() <= 1) {
s = s.toUpperCase();
} else {
s = s.substring(0, 1).toUpperCase() +s.substring(1);
}
tv1.setText(s);
}
});
}
使用android:inputType="textPersonName"
时没有进行拼写检查,但是在**textCapWords**
中完成
因此,如果您使用textPersonName
,名称不会有红色下划线,但每个名称的首字母(名字,中间名,姓氏等)将不会大写
所以最好的解决方案是将两者结合起来或者是android:inputType="textPersonName|textCapWords"
现在不会有红色下划线的名称和第一个字母也将大写