32

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

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

无论如何,我选择textCapWords了新的输入类型以确保每个单词都大写。将这种输入类型用于人名会有什么缺点吗?textPersonName用作输入类型有什么好处?

4

5 回答 5

41

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

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

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

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

因此,要结合textPersonNamewith的好处textCapWords,只需使用以下语法设置输入类型:

android:inputType="textPersonName|textCapWords"

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

于 2014-04-10T01:30:52.387 回答
13

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

<EditText android:id="@+id/et_test" android:inputType="?????"/>
  • 输入类型:textLongMessage。键盘:字母/默认。输入按钮:发送/下一步。有情绪:是的。大小写:小写。建议:是的。加法字符:,. 和所有

  • 输入类型:文本过滤器。键盘:字母/默认。输入按钮:发送/下一步。有情绪:是的。大小写:小写。建议:没有。加法字符:,. 和所有

  • 输入类型:textCapWords。键盘:字母/默认。输入按钮:发送/下一步。有情绪:是的。案例:骆驼案。建议:是的。加法字符:,. 和所有

  • 输入类型:textCapSentences。键盘:字母/默认。输入按钮:发送/下一步。有情绪:是的。案例:句子案例。建议:是的。加法字符:,. 和所有

  • 输入类型:时间。键盘:数字。输入按钮:发送/下一步。有情绪:没有。建议:没有。加法字符: :

  • 输入类型:文本多行。键盘:字母/默认。输入按钮:下一行。有情绪:是的。大小写:小写。建议:是的。加法字符:,. 和所有

  • 输入类型:数字键盘:数字。输入按钮:发送/下一步。有情绪:没有。建议:没有。加法字符:无

  • 输入类型:文本电子邮件地址。键盘:字母/默认。输入按钮:发送/下一步。有情绪:没有。大小写:小写。建议:没有。加法字符:@. 和所有

  • inputType:(无类型)。键盘:字母/默认。输入按钮:下一行。有情绪:是的。大小写:小写。建议:是的。加法字符:,. 和所有

  • 输入类型:文本密码。键盘:字母/默认。输入按钮:发送/下一步。有情绪:没有。大小写:小写。建议:没有。加法字符:,. 和所有

  • 输入类型:文本。键盘:键盘:字母/默认。输入按钮:发送/下一步。有情绪:是的。大小写:小写。建议:是的。加法字符:,. 和所有

  • 输入类型:textShortMessage。键盘:字母/默认。输入按钮:情感。有情绪:是的。大小写:小写。建议:是的。加法字符:,. 和所有

  • 输入类型:textUri。键盘:字母/默认。输入按钮:发送/下一步。有情绪:没有。大小写:小写。建议:没有。加法字符:/. 和所有

  • 输入类型:textCapCharacters。键盘:字母/默认。输入按钮:发送/下一步。有情绪:是的。案例:大写。建议:是的。加法字符:,. 和所有

  • 输入类型:电话键盘:数字。输入按钮:发送/下一步。有情绪:没有。建议:没有。加法字符: *** # 。- / () WPN , +**

  • 输入类型:textPersonName。键盘:字母/默认。输入按钮:发送/下一步。有情绪:是的。大小写:小写。建议:是的。加法字符:,. 和所有

注意: Auto-capitalization如以下屏幕截图所示设置将更改默认行为(True 为默认值,textCapWords 将按预期工作。False 将覆盖 textCapWords)

自动大写设置

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

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

于 2016-09-12T23:31:42.110 回答
2

在任何情况下,我都选择了 textCapWords 作为新的输入类型,以确保每个单词都大写。将这种输入类型用于人名会有什么缺点吗?

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

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

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

于 2013-07-02T12:03:12.530 回答
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);

}
});

}
于 2013-07-02T12:12:08.953 回答
1

使用时不进行拼写检查,android:inputType="textPersonName"但在**textCapWords**

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

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

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

于 2017-12-25T10:41:39.433 回答