私のアプリでは "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のバグですか?ありがとう
これは、アプリケーションコードでボタンのTransformationMethodを設定することで修正できます。
mButton.setTransformationMethod(null);
それがなぜ起こっているのか私にはわかりませんが、3つの簡単な試みがあります。
Android:textAllCaps="false"
でlayout-v21
を使う
プログラムでボタンの変換方法を変更します。 mButton.setTransformationMethod(null);
Allcapsのスタイルをチェック
注 : public void setAllCaps(boolean allCaps)Android:textAllCaps はAPIバージョン14から利用できます。
これが私の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>
Android:textAllCaps = "false"に設定します。 appcompatスタイルを使用している場合は、textAllCapsがスタイルの前にくるようにしてください。そうでなければ、スタイルはそれをオーバーライドします。例えば:
Android:textAllCaps="false"
style="@style/Base.TextAppearance.AppCompat"
この行を追加する
<item name="Android:textAllCaps">false</item>
これはうまくいっています....あなたのコードの一番下のコードにこれを追加してください:
Android:textAllCaps="false"
uが小さい文字を入力しようとしている大文字を無効にする必要があります。
Lollipopのデフォルトには "textAllCaps true"が付属しているので、手動でfalseにする必要があります。
<Button>
タグにAndroid:textAllCaps = "false"を追加してください。
テーマのボタンの外観を変更するだけで、すべてのボタンに対して機能する簡単な方法があります。これを試してください。
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
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"/>
お役に立てれば。
ボタンにAndroid:textAllCaps="false"
を追加することができます。
ボタンのテキストは、すべてのボタンに適用されるアプリケーションのテーマによって大文字に変換されることがあります。テーマ__/stylesファイルをチェックして属性Android:textAllCaps
を設定してください。
Android Studio IDEでは、エキスパートプロパティを表示するにはフィルタアイコンをクリックする必要があります。 textAllCaps
プロパティが表示されます。チェックしてからチェックを外してください。
さて、ちょうどこれに遭遇しました。 Lollipopのボタンはすべて大文字で表示され、フォントは「通常」にリセットされます。しかし、私の場合(Android 5.02)は、あるレイアウトでは正しく機能していましたが、別のレイアウトでは機能していませんでした。
APIの変更は機能しませんでした。
すべて大文字に設定するには、最小API 14が必要ですが、フォントはまだ「標準」にリセットされます。
定義されているものがない場合はAndroid Material Stylesによってスタイルの変更が強制されるためです(これが私のレイアウトの一方で機能し、他方ではスタイルを定義したために機能しなかった理由です)。
したがって、簡単な解決策は各活動のマニフェストにスタイルを定義することです。
Android:theme = "@ Android:style/Theme.NoTitleBar.Fullscreen"
(これが誰かに役立つことを願って、昨夜私に数時間を節約していたでしょう)
Facebookボタンのテキストがすべて大文字で表示されているためにここに到着した場合は、このAndroid:textAllCaps="false"
をxmlファイルに追加してください。それは私のために働きました。
appcompat-v7
を使用する場合は、AppCompatButton
とsetSupportAllCaps(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のドキュメントを参照してください。
デフォルトでは、Androidのボタンはすべて大文字のキーワードを提供します。ボタンテキストを小文字または大文字と小文字を混在させたい場合は、Android:textAllCaps="false"
を使用してtextAllCaps
フラグを無効にできます。
私はなぜ@ user1010160の答えが0の評価を得たのか知りません。私が十分な評判を持っていたら私はそれに+1を与えたでしょう。
私のアプリは14未満のAPI用に設計されており、私は自分のプログラムにコードを追加したくなかったので、私は彼の答えを読むまで解決策を見つけられませんでした。彼が言ったのは、アプリケーションスタイルに必要なことをしたとしても、アクティビティにスタイルを追加してtextAllCapsをfalseに設定しない限り、それは機能しないということです。
スタイルのデフォルトはAllCapsプロパティである可能性があるため、アクティビティのスタイルを保持するだけでは不十分です(私のアクティビティにはスタイルがありました)。アクティビティでも、そのプロパティをfalseに明示的に設定する必要があります。
私は今それをアプリケーションとマニフェストファイルのアクティビティ部分の両方に持っています。