Невозможно ввести нижний регистр кнопки в андроид студии


184

У меня есть тривиальный вопрос, который беспокоит меня некоторое время. Я пытался гуглить это, но, похоже, никто не сталкивался с такой же проблемой, как я, или не видит в этом проблемы. Когда я делаю кнопку в activity_my.xml под макетом

 <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_1_name"
    android:id="@+id/button2"
    android:layout_marginTop="140dp"
    android:layout_below="@+id/textView"
    android:layout_centerHorizontal="true" />

Я получаю кнопку, которая выглядит как это] [Imgur

хотя мой строковый код:

<resources>

<string name="app_name">HelloWorld</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="button_1_name">BuTtOn 1</string>

Я знаю, что я определенно пропускаю что-то маленькое здесь, но как мне заставить строчные / прописные буквы работать в тексте кнопки?

Спасибо!


Проверьте папку с различными значениями для строки button_1_name.
Зеешан Хан

@lpbug год спустя. все еще столкнулся с той же проблемой, и я приземлился здесь и получил решение
Edijae Crusar

Ответы:


466

Вы можете добавить android:textAllCaps="false"к кнопке.

Текст кнопки может быть преобразован в верхний регистр темой приложения, которая применяется ко всем кнопкам. Проверьте темы / файлы стилей для установки атрибута android:textAllCaps.


1
Спасибо за ответ! android:textAllCaps="false"работал как обходной путь, но добавленные новые кнопки все еще пишутся с большой буквы. Мой файл styles.xml в разделе res / values ​​не имеет вышеуказанного атрибута. Вот что это было<resources> <!-- Base application theme. --> <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> <!-- Customize your theme here. --> </style> </resources>
Алекс Х

15
Вы наследуете тему Theme.Holo.Light.DarkActionBar, которая содержит этот параметр. Вы должны добавить новое явное свойство для кнопок стиля, например<style name="Widget.Button" parent="Widget.Button"><item name="android:textAllCaps">false</item></style>
Stelian Matei

1
После добавления этого я имею ошибку инфляции с arrayindexoutofboundsexception.
М. Усман Хан

@usman Я сомневаюсь, что исключение связано с textAllCapsсобственностью. Можете ли вы предоставить более подробную информацию?
Стелиан Матей

1
Это не сработает, если вы используете собственный класс, расширяющий класс Button.
Э-э Джоши

28
<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:buttonStyle">@style/Button</item>
</style>

<style name="Button" parent="Widget.AppCompat.Button">
    <item name="android:textAllCaps">false</item>
</style>

Просто и эффективно.
Valandres

8

Это можно исправить в коде приложения, установив пустое значение TransformationMethod кнопки, например

mButton.setTransformationMethod(null);


4

Есть 3 способа сделать это.

1. Добавьте следующую строку в style.xml, чтобы изменить все приложение

<item name="android:textAllCaps">false</item>

2.Use

android:textAllCaps="false"

в твоем layout-v21

mButton.setTransformationMethod(null);
  1. добавить эту строку под элементом (кнопка или редактировать текст) в XML

андроид: textAllCaps = "ложь"

С уважением




1

Я столкнулся с этой проблемой в TextView. я пытался

android:textAllCaps="false", 
mbutton.setAllCaps(false);   
<item name="android:textAllCaps">false</item> 

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

tv.setText("Mytext");

ТВ является объектом TextView. Но согласно стандартам кодирования, это плохая практика.



0

в XML Code
добавьте эту строку, android:textAllCaps="false" как показано ниже

 <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_1_name"
        android:id="@+id/button2"
        android:layout_marginTop="140dp"
        android:layout_below="@+id/textView"
        android:layout_centerHorizontal="true"
       ** android:textAllCaps="false" ** />

или

в коде Java ( программно )
добавьте эту строку к вашей кнопкеsetAllCaps(false)

Button btn = (Button) findViewById(R.id.button2);
btn.setAllCaps(false);

0

Есть свойство, <Button>которое есть в android: textAllCaps = "false", которые делают символы, которые вы хотите, в ваших маленьких и заглавных буквах. По умолчанию он стал True, поэтому напишите этот код и сделайте textAllCaps = false, тогда вы можете написать текст на кнопке маленькими буквами и буквами Caps согласно вашему требованию. Полный код для кнопки, которая позволяет использовать для написания букв в соответствии с нашим требованием.

 <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/btnLogin"
            android:text="Login for Chat"
            android:textAllCaps="false"/>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.