InputType = имя_пользователя?

У меня есть объект TextView, целью которого является ввести имя человека. Я посмотрел на здесь и увидел, что textPersonName - это тип ввода. Поэтому я выбрал этот тип ввода, считая, что он будет делать то, что я хотел.

Однако этот тип ввода не использует первую букву. Поскольку имена людей начинаются с заглавных букв, я обнаружил, что это очень странно. Является ли это преднамеренным или надзор за дизайном в части Google?

В любом случае, я выбрал textCapWords в качестве нового типа ввода, чтобы каждое слово начиналось заглавным. Будет ли недостаток в использовании этого типа ввода для имени человека? Каковы преимущества использования textPersonName в качестве типа ввода?

Ответы

Ответ 1

Вы можете комбинировать атрибуты inputType с помощью оператора | (или).

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

Тип данных, помещаемых в текстовое поле, используемый для помощи методу ввода, определяет, как позволить пользователю вводить текст. Константы здесь соответствуют тем, которые определены в InputType. Как правило, вы можете выбрать одно значение, хотя некоторые из них могут быть объединены вместе, как указано. Установка этого атрибута во что-либо, кроме него, также означает, что текст доступен для редактирования.

Должен быть один или несколько (разделенных символом '|') следующих постоянных значений.

Итак, чтобы объединить преимущества textPersonName с textCapWords, просто установите тип ввода с помощью этого синтаксиса:

android:inputType="textPersonName|textCapWords"

Этот ответ дает краткое объяснение преимуществ использования textPersonName для поля ввода имени.

Ответ 2

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. Клавиатура: алфавит/значение по умолчанию. Введите кнопку: Отправить/Далее. Есть эмоции: да. Случай: UPPERCASE. Предложение: да. Добавочные символы: , и . и все

  • inputType: телефон. Клавиатура: числовое. Введите кнопку: Отправить/Далее. Есть эмоции: нет. Предложение: нет. Шаблоны добавления: * #. -/() W P N, +

  • inputType: textPersonName. Клавиатура: алфавит/значение по умолчанию. Введите кнопку: Отправить/Далее. Есть эмоции: да. Корпус: строчный. Предложение: да. Добавочные символы: , и . и все

Примечание. Auto-capitalization настройка изменит поведение по умолчанию.

Примечание 2: В Numeric keyboard, ВСЕ номера - английский 1234567890.

Примечание 3: Correction/Suggestion настройка переопределяет поведение по умолчанию.

Ответ 3

В любом случае, я выбрал textCapWords как новый тип ввода для убедитесь, что каждое слово начинает заглавное. Будет ли Недостаток использования этого типа ввода для имени человека?

Кажется, здесь не проблема, так как вы просто меняете тип ввода, указав его как начальную букву в "Капитал", но это позволит ввести несколько строк. Это может быть недостатком, когда вам нужна только одна строка с имя человека.

В чем преимущества использования textPersonName в качестве типа ввода?

Однострочная запись в текстовом поле является преимуществом для использования текстового ввода как textPerson.

Ответ 4

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);

}
});

}

Ответ 5

Проверка орфографии не выполняется при использовании android:inputType="textPersonName", но это делается в **textCapWords**

Итак, если вы используете textPersonName, для имен не будет красной подчеркивания, но первая буква каждого имени (имя, имя, фамилия и т.д.) не будет заглавной

поэтому лучшее решение объединяет как с, так и с то есть android:inputType="textPersonName|textCapWords"

теперь там не будет красной подчеркивания для имени, а первая буква будет также заглавной.