web-dev-qa-db-ja.com

ボタンのテキストがロリポップのすべて大文字に強制されるのはなぜですか?

私のアプリでは "Tide Now WA" 私は最近、新しいNexus 9タブレット(Lollipop - API 21)を使って互換性をテストしました。

ボタンのテキストを書いています。このアプリは、Android 2.3とAndroid 4.0を使用してテキストを正しく書き込みます。すなわち大文字と小文字の混在.

同じアプリを私のNexus 9で実行すると、テキスト内のすべての文字が大文字になります。

私のマニフェストには次の文が含まれています。

uses-sdk Android:minSdkVersion="10" Android:targetSdkVersion="14"

私のコードでこれを修正できますか、それともO.Sのバグですか?ありがとう

379
user1644002

これは、アプリケーションコードでボタンのTransformationMethodを設定することで修正できます。

mButton.setTransformationMethod(null);
101
user1644002

それがなぜ起こっているのか私にはわかりませんが、3つの簡単な試みがあります。

  1. Android:textAllCaps="false"layout-v21を使う

  2. プログラムでボタンの変換方法を変更します。 mButton.setTransformationMethod(null);

  3. Allcapsのスタイルをチェック

public void setAllCaps(boolean allCaps)Android:textAllCaps はAPIバージョン14から利用できます。

569

これが私のvalues/themes.xmlでしたことです

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="buttonStyle">@style/MyButton</item>
    </style>

    <style name="MyButton" parent="Widget.AppCompat.Button">
        <item name="Android:textAllCaps">false</item>
    </style>
153
miguel

Android:textAllCaps = "false"に設定します。 appcompatスタイルを使用している場合は、textAllCapsがスタイルの前にくるようにしてください。そうでなければ、スタイルはそれをオーバーライドします。例えば:

Android:textAllCaps="false"
style="@style/Base.TextAppearance.AppCompat"
62
Bob bobbington

この行を追加する

    <item name="Android:textAllCaps">false</item>
54
Ashish Chaugule

これはうまくいっています....あなたのコードの一番下のコードにこれを追加してください:

Android:textAllCaps="false"

uが小さい文字を入力しようとしている大文字を無効にする必要があります。

31
parsa sarshar

Lollipopのデフォルトには "textAllCaps true"が付属しているので、手動でfalseにする必要があります。

31
tharinduNA

<Button>タグにAndroid:textAllCaps = "false"を追加してください。

23

テーマのボタンの外観を変更するだけで、すべてのボタンに対して機能する簡単な方法があります。これを試してください。

values-21/styles.xml

<resources>
    <style name="myBaseTheme"
        parent="@Android:style/Theme.Material.Light">
        <item name="Android:colorPrimary">@color/bg</item>
        <item name="Android:colorPrimaryDark">@color/bg_p</item>
        <item name="Android:textAppearanceButton">@style/textAppearanceButton</item>
    </style>

    <style name="textAppearanceButton" parent="@Android:style/TextAppearance.Material.Widget.Button">
        <item name="Android:textAllCaps">false</item>
    </style>
</resources>

シモンズ:それは材料設計の原則に従うことをお勧めします、あなたはボタンで大文字のテキストを表示する必要があります、 http://www.google.com/design/spec/components/buttons.html

19
pedroca

XMLレイアウトでAndroid.support.v7.widget.AppCompatButtonを使用すると、レイアウト21を使用したり、プログラムで何かを変更したりする必要がなくなります。当然これはAppCompat v7ライブラリでも動作します。

<Android.support.v7.widget.AppCompatButton
    Android:id="@+id/btnOpenMainDemo"
    Android:textAllCaps="false"
    style="@style/HGButton"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="@string/btn_main_demo"
    Android:layout_centerHorizontal="true"
    Android:layout_centerVertical="true"/>

お役に立てれば。

10
user2288580

ボタンにAndroid:textAllCaps="false"を追加することができます。

ボタンのテキストは、すべてのボタンに適用されるアプリケーションのテーマによって大文字に変換されることがあります。テーマ__/stylesファイルをチェックして属性Android:textAllCapsを設定してください。

8
chakri Reddy

Android Studio IDEでは、エキスパートプロパティを表示するにはフィルタアイコンをクリックする必要があります。 textAllCapsプロパティが表示されます。チェックしてからチェックを外してください。

8
wisbucky

さて、ちょうどこれに遭遇しました。 Lollipopのボタンはすべて大文字で表示され、フォントは「通常」にリセットされます。しかし、私の場合(Android 5.02)は、あるレイアウトでは正しく機能していましたが、別のレイアウトでは機能していませんでした。

APIの変更は機能しませんでした。
すべて大文字に設定するには、最小API 14が必要ですが、フォントはまだ「標準」にリセットされます。

定義されているものがない場合はAndroid Material Stylesによってスタイルの変更が強制されるためです(これが私のレイアウトの一方で機能し、他方ではスタイルを定義したために機能しなかった理由です)。

したがって、簡単な解決策は各活動のマニフェストにスタイルを定義することです。
Android:theme = "@ Android:style/Theme.NoTitleBar.Fullscreen"
(これが誰かに役立つことを願って、昨夜私に数時間を節約していたでしょう)

2
user1010160

Facebookボタンのテキストがすべて大文字で表示されているためにここに到着した場合は、このAndroid:textAllCaps="false"をxmlファイルに追加してください。それは私のために働きました。

2
war_Hero

appcompat-v7を使用する場合は、AppCompatButtonsetSupportAllCaps(false)をサブクラス化してから、このクラスをすべてのボタンに使用できます。

/**
 * Light extension of {@link AppCompatButton} that overrides ALL CAPS transformation
 */
public class Button extends AppCompatButton {
    public Button(Context context, AttributeSet attrs) {
        super(context, attrs);
        setSupportAllCaps(false);
    }

    public Button(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        setSupportAllCaps(false);
    }
}

AppCompatButton#setSupportAllCaps(boolean) Androidのドキュメントを参照してください。

2
hidro

デフォルトでは、Androidのボタンはすべて大文字のキーワードを提供します。ボタンテキストを小文字または大文字と小文字を混在させたい場合は、Android:textAllCaps="false"を使用してtextAllCapsフラグを無効にできます。

0
Reyaz Ahmad

私はなぜ@ user1010160の答えが0の評価を得たのか知りません。私が十分な評判を持っていたら私はそれに+1を与えたでしょう。

私のアプリは14未満のAPI用に設計されており、私は自分のプログラムにコードを追加したくなかったので、私は彼の答えを読むまで解決策を見つけられませんでした。彼が言ったのは、アプリケーションスタイルに必要なことをしたとしても、アクティビティにスタイルを追加してtextAllCapsをfalseに設定しない限り、それは機能しないということです。

スタイルのデフォルトはAllCapsプロパティである可能性があるため、アクティビティのスタイルを保持するだけでは不十分です(私のアクティビティにはスタイルがありました)。アクティビティでも、そのプロパティをfalseに明示的に設定する必要があります。

私は今それをアプリケーションとマニフェストファイルのアクティビティ部分の両方に持っています。

0
Zvi