InputType = PersonName?

时间:2013-07-02 11:51:05

标签: android textview

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

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

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

5 个答案:

答案 0 :(得分:37)

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

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

  

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

     

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

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

android:inputType="textPersonName|textCapWords"

answer简要说明了将textPersonName用于名称输入字段的好处。

答案 1 :(得分: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:数字键盘:数字。输入按钮:发送/下一步。有感情:没有。建议:没有。 添加字符:没有

  • inputType: textEmailAddress 。键盘:字母/默认。输入按钮:发送/下一步。 有感情:没有。案例:小写。 建议:否。添加字符: @ 以及所有内容

  • inputType:(无类型)。键盘:字母/默认。 输入按钮:下一行。有感情:是的。案例:小写。建议:是的。添加字符:以及所有内容

  • inputType: textPassword 。键盘:字母/默认。输入按钮:发送/下一步。有感情:没有。案例:小写。 建议:否。添加字符:以及所有内容

  • inputType:文字。键盘:键盘:字母/默认。输入按钮:发送/下一步。有感情:是的。案例:小写。建议:是的。添加字符:以及所有内容

  • inputType: textShortMessage 。键盘:字母/默认。 输入按钮:情感。有感情:是的。案例:小写。建议:是的。添加字符:以及所有内容

  • inputType: textUri 。键盘:字母/默认。输入按钮:发送/下一步。有感情:没有。案例:小写。 建议:否。添加字符: / 以及所有内容

  • inputType: textCapCharacters 。键盘:字母/默认。输入按钮:发送/下一步。有感情:是的。 案例:大写。建议:是的。添加字符:以及所有内容

  • inputType:手机键盘:数字。输入按钮:发送/下一步。有感情:没有。 建议:否。加法字符: *#。 - /()W P N,+

  • inputType: textPersonName 。键盘:字母/默认。输入按钮:发送/下一步。有感情:是的。案例:小写。建议:是的。添加字符:以及所有内容

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

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

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

答案 2 :(得分:2)

  

无论如何,我选择了textCapWords作为新的输入类型   确保每个单词都开始大写。会不会有   将这种输入类型用于某个人的名字是不利的吗?

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

  

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

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

答案 3 :(得分: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);

}
});

}

答案 4 :(得分:1)

使用android:inputType="textPersonName"时未执行拼写检查,但已在**textCapWords**

中完成

因此,如果你使用textPersonName,那么名字不会是红色下划线,但每个名字的首字母(名字,中间名,姓氏等)都不会被大写

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

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