InputType = PersonName?

问题描述 投票:26回答:5

我有一个TextView对象,其目的是键入一个人的名字。我看着here,发现textPersonName是一种输入类型。所以我选择了那种输入类型,认为它可以做我想要的。

但是,此输入类型不会将第一个字母大写。由于人们的名字以大写字母开头,我发现这很奇怪。这是故意的,还是Google的设计疏忽?

在任何情况下,我都选择textCapWords作为新的输入类型,以确保每个单词开始大写。将此输入类型用于某个人的名字会有任何不利之处吗?使用textPersonName作为输入类型有什么好处?

android textview
5个回答
37
投票

您可以使用|(或)运算符组合inputType属性。

http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType

放置在文本字段中的数据类型,用于帮助输入方法决定如何让用户输入文本。这里的常量对应于InputType定义的常量。通常,您可以选择单个值,但有些值可以按指示组合在一起。将此属性设置为除none之外的任何内容也意味着文本是可编辑的。

必须是以下常量值中的一个或多个(由“|”分隔)。

因此,要结合使用textPersonNametextCapWords的优点,只需使用以下语法设置输入类型:

android:inputType="textPersonName|textCapWords"

这个answer简要说明了使用textPersonName作为名称输入字段的好处。


11
投票

inputype小部件中的EditText属性:(在Android 4.4.3和2.3.3上测试)

<EditText android:id="@+id/et_test" android:inputType="?????"/>
  • inputType:textLongMessage。键盘:字母/默认。输入按钮:发送/下一步。有感情:是的。案例:小写。建议:是的。加法字符:和。和所有
  • inputType:textFilter。键盘:字母/默认。输入按钮:发送/下一步。有感情:是的。案例:小写。建议:没有。加法字符:和。和所有
  • inputType:textCapWords。键盘:字母/默认。输入按钮:发送/下一步。有感情:是的。案例:骆驼案。建议:是的。加法字符:和。和所有
  • inputType:textCapSentences。键盘:字母/默认。输入按钮:发送/下一步。有感情:是的。案例:判刑案件。建议:是的。加法字符:和。和所有
  • inputType:时间。键盘:数字。输入按钮:发送/下一步。有感情:没有。建议:没有。加法字符::
  • inputType:textMultiLine。键盘:字母/默认。输入按钮:下一行。有感情:是的。案例:小写。建议:是的。加法字符:和。和所有
  • inputType:number。键盘:数字。输入按钮:发送/下一步。有感情:没有。建议:没有。添加字符:没有
  • inputType:textEmailAddress。键盘:字母/默认。输入按钮:发送/下一步。有感情:没有。案例:小写。建议:没有。加法字符:@和。和所有
  • inputType :(无类型)。键盘:字母/默认。输入按钮:下一行。有感情:是的。案例:小写。建议:是的。加法字符:和。和所有
  • inputType:textPassword。键盘:字母/默认。输入按钮:发送/下一步。有感情:没有。案例:小写。建议:没有。加法字符:和。和所有
  • inputType:text。键盘:键盘:字母/默认。输入按钮:发送/下一步。有感情:是的。案例:小写。建议:是的。加法字符:和。和所有
  • inputType:textShortMessage。键盘:字母/默认。输入按钮:情绪。有感情:是的。案例:小写。建议:是的。加法字符:和。和所有
  • inputType:textUri。键盘:字母/默认。输入按钮:发送/下一步。有感情:没有。案例:小写。建议:没有。加法字符:/和。和所有
  • inputType:textCapCharacters。键盘:字母/默认。输入按钮:发送/下一步。有感情:是的。案例:大写。建议:是的。加法字符:和。和所有
  • inputType:phone。键盘:数字。输入按钮:发送/下一步。有感情:没有。建议:没有。加法字符:*#。 - /()W P N,+
  • inputType:textPersonName。键盘:字母/默认。输入按钮:发送/下一步。有感情:是的。案例:小写。建议:是的。加法字符:和。和所有

注意:Auto-capitalization设置将更改默认行为。

注2:在Numeric keyboard中,所有数字均为英语1234567890。

注3:Correction/Suggestion设置会覆盖默认行为。


2
投票

在任何情况下,我都选择textCapWords作为新的输入类型,以确保每个单词开始大写。将此输入类型用于某个人的名字会有任何不利之处吗?

这里似乎没有任何问题,因为你只需更改输入类型,将其指定为Capital的首字母,但它将允许输入多行。当您只需要一行带有人名时,这可能是一个缺点。

使用textPersonName作为输入类型有什么好处?

文本字段中的单行条目是将文本输入用作textPerson的优势。


1
投票
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);

}
});

}

1
投票

使用android:inputType="textPersonName"时没有进行拼写检查,但是在**textCapWords**中完成

因此,如果您使用textPersonName,名称不会有红色下划线,但每个名称的首字母(名字,中间名,姓氏等)将不会大写

所以最好的解决方案是将两者结合起来或者是android:inputType="textPersonName|textCapWords"

现在不会有红色下划线的名称和第一个字母也将大写

© www.soinside.com 2019 - 2024. All rights reserved.