Прописная заглавная буква для Android-элемента управления EditText - PullRequest
1 голос
/ 12 июля 2011

У меня есть макет, на котором я устанавливаю тип ввода элемента управления EditText как Android: inputType = "textCapCharacters". Отлично работает на этом элементе управления, но затем продолжает работать, даже передавая атрибут верхнего регистра другим приложениям.

Это похоже на 2.1 Героя и 2.3 Wildfire.

Какие-либо предложения относительно того, как я могу отсоединить его или вернуть клавиатуру в режим по умолчанию?

Спасибо

Вот фрагмент кода, демонстрирующий застрявшее поведение в верхнем регистре. Я не могу себе представить, что я единственный человек, который когда-либо имел эту проблему.

Нажмите на строку адреса 1, и слова, написанные заглавными буквами, будут работать нормально. При фокусировке Postcode клавиатура правильно переключается в верхний регистр, но остается застрявшей в верхнем регистре, независимо от того, на каком другом элементе управления вы работаете (например, при нажатии на адресную строку 1), даже если вы переходите в другое приложение.

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

Теперь я знаю, что на Hero, по крайней мере, проблема существует только на стандартной клавиатуре. При использовании клавиш быстрого доступа все выглядит хорошо.

Я разместил этот вопрос на двух других форумах без ответа, но Stackoverflow кажется лучшей рекомендацией для этого типа запроса, но через 8 дней у меня не было никаких предложений относительно того, что я мог бы попробовать здесь. Если бы больше информации, других тегов или публикации в другом месте было бы для меня лучшим вариантом, я был бы рад услышать и эти предложения.

Полный и полный код ошибки, приведенный ниже.

Любые предложения, кто-нибудь?

import android.app.Activity;
import android.os.Bundle;

public class Main extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="fill_parent" android:layout_width="fill_parent">



    <TableLayout android:layout_width="fill_parent" android:id="@+id/tableLayout1"
        android:layout_height="fill_parent" android:layout_margin="5dp"
        android:stretchColumns="1">

        <TableRow>
            <EditText android:textSize="17sp" android:layout_height="39dp"
                android:layout_width="fill_parent" android:id="@+id/address"
                android:hint="Address Line 1" android:layout_span="3"
                android:inputType="textCapWords"></EditText>
        </TableRow>

        <TableRow>
            <EditText android:inputType="textCapCharacters"
                android:textSize="17sp" android:id="@+id/postcode"
                android:layout_height="39dp" android:hint="Postcode"
                android:layout_weight="1" android:layout_width="0dip"></EditText>
            <CheckBox android:text="Check Me"
                android:layout_height="39dp" android:id="@+id/checkme"
                android:textSize="12sp" android:layout_weight="1"
                android:layout_span="2" android:layout_width="0dip"
                android:layout_gravity="center"></CheckBox>
            <TextView android:layout_weight="1" android:layout_width="0dip"></TextView>
        </TableRow>
    </TableLayout>
</LinearLayout>

1 Ответ

0 голосов
/ 25 февраля 2016

Если вы хотите показать клавиатуру с прописной буквой, то вместо android:inputType="textCapCharacters" вы можете использовать android:textAllCaps="true". Тогда вы не будете придерживаться формата Uppercase. Затем, чтобы убедиться, что ввод находится в верхнем регистре, вы можете просто вызвать метод toUpperCase() для извлеченной строки из EditText. Дайте мне знать ваши мысли по этому поводу. Проверьте эту ссылку для большей ясности.

...