android लॉलीपॉप पर मेरे बटन टेक्स्ट को सभी सीएपीएस क्यों मजबूर किया गया है?




android-5.0-lollipop android-button (13)

शैली में इस लाइन को जोड़ें

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

मेरे ऐप "टाइड नाउ डब्ल्यूए" में मैंने हाल ही में नए नेक्सस 9 टैबलेट (लॉलीपॉप - एपीआई 21) का उपयोग करके संगतता के लिए परीक्षण किया था।

यह कुछ बटन पाठ लिखता है। यह ऐप एंड्रॉइड 2.3 और एंड्रॉइड 4.0 का उपयोग कर टेक्स्ट को सही तरीके से लिखता है। मैं मिश्रित पूंजी और निचले मामले पत्र।

जब मेरे नेक्सस 9 पर एक ही ऐप चलाया जाता है तो पाठ में सभी अक्षरों को पूंजीकृत किया जाता है।

मेरे मेनिफेस्ट में FWIW निम्न कथन शामिल है:

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

क्या मैं इसे अपने कोड में ठीक कर सकता हूं या यह ओएस धन्यवाद में एक बग है


ठीक है, बस इसमें भाग गया। लॉलीपॉप में बटन सभी अपरकेस आते हैं और फ़ॉन्ट 'सामान्य' पर रीसेट हो जाता है। लेकिन मेरे मामले में (एंड्रॉइड 5.02) यह एक लेआउट में सही ढंग से काम कर रहा था, लेकिन दूसरा नहीं !?

बदलते एपीआई काम नहीं किया।
सभी कैप्स में सेट करने के लिए न्यूनतम एपीआई 14 की आवश्यकता होती है और फ़ॉन्ट अभी भी 'सामान्य' पर रीसेट हो जाता है।

ऐसा इसलिए है क्योंकि एंड्रॉइड मैटेरियल स्टाइल शैलियों में बदलाव को मजबूर करता है यदि कोई परिभाषित नहीं किया गया है (यही कारण है कि यह मेरे लेआउट में से एक में काम करता है और दूसरा नहीं क्योंकि मैंने शैली परिभाषित की है)।

तो आसान फिक्स प्रत्येक गतिविधि के लिए मैनिफेस्ट में एक शैली को परिभाषित करना है जो मेरे मामले में था:
एंड्रॉयड: विषय = "@ एंड्रॉयड: शैली / Theme.NoTitleBar.Fullscreen"
(उम्मीद है कि यह किसी की मदद करेगा, कल रात मुझे कुछ घंटे बचाएगा)


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" जोड़ सकते हैं android:textAllCaps="false" बटन पर android:textAllCaps="false"

बटन टेक्स्ट को आपके ऐप की थीम द्वारा अपरकेस में बदल दिया जा सकता है जो सभी बटनों पर लागू होता है। विशेषता android:textAllCaps सेट करने के लिए थीम / शैलियों फ़ाइलों की जांच करें android:textAllCaps


एंड्रॉइड जोड़ें: textAllCaps = <Button> false <Button> टैग में "झूठा" यह है।


मुझे नहीं पता कि यह क्यों हो रहा है लेकिन बनाने के लिए 3 छोटे प्रयास हैं:

  1. android:textAllCaps="false" प्रयोग करें android:textAllCaps="false" आपके layout-v21 में android:textAllCaps="false"

  2. प्रोग्राम के रूप में बटन के परिवर्तन विधि को बदलें। mButton.setTransformationMethod(null);

  3. Allcaps के लिए अपनी शैली की जांच करें

नोट : सार्वजनिक शून्य सेटअल कैप्स (बूलियन ऑल कैप्स) एंड्रॉइड: टेक्स्ट एल कैप्स एपीआई संस्करण 14 से उपलब्ध हैं।


यदि आप appcompat-v7 उपयोग करते हैं, तो आप setSupportAllCaps(false) और setSupportAllCaps(false) को उप 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) एंड्रॉइड दस्तावेज़ देखें।


मुझे नहीं पता कि @ user1010160 का जवाब 0 की रेटिंग क्यों मिली है। अगर मेरे पास पर्याप्त प्रतिष्ठा थी तो मैंने इसे +1 दिया होगा।

चूंकि मेरा ऐप 14 से कम एपीआई के लिए डिज़ाइन किया गया है और मैं अपने प्रोग्राम में कोड जोड़ना नहीं चाहता था, मुझे तब तक समाधान नहीं मिला जब तक कि मैं उसका जवाब नहीं पढ़ता। उन्होंने जो कहा वह यह था कि भले ही आपने एप्लिकेशन शैलियों में जो कुछ भी किया है, वह तब तक काम नहीं करेगा जब तक कि आप अपनी गतिविधि में कोई शैली नहीं जोड़ते और वहां आप टेक्स्ट को सभी को गलत पर सेट करते हैं।

गतिविधि के लिए शैली के लिए पर्याप्त नहीं है (मेरी गतिविधि में एक शैली थी), क्योंकि स्टाइल ऑल कैप्स प्रॉपर्टी पर डिफ़ॉल्ट हो सकती है। आपको गतिविधि में भी स्पष्ट रूप से सेट करना होगा, वह संपत्ति झूठी है।

अब मेरे पास एप्लिकेशन और मैनिफेस्ट फ़ाइल के गतिविधि भागों में दोनों हैं।


यहां मैंने अपने मूल्यों / 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>

एक आसान तरीका है जो सभी बटनों के लिए काम करता है, बस अपनी थीम में बटनों की उपस्थिति बदलें, इसे आजमाएं:

मूल्यों में -21 / शैलियों.एक्सएमएल

<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


एंड्रॉइड सेट करें: textAllCaps = "false"। यदि आप एक एपकंपैप शैली का उपयोग कर रहे हैं, तो सुनिश्चित करें कि टेक्स्टअलैप्स शैली से पहले आता है। अन्यथा शैली इसे ओवरराइड करेगा। उदाहरण के लिए:

android:textAllCaps="false"
style="@style/Base.TextAppearance.AppCompat"

यह काम कर रहा है .... बस अपने कोड में अपने कोड में इसे जोड़ें:

android:textAllCaps="false"

इसे कैप्स अक्षर को निष्क्रिय करना चाहिए जो यू छोटे टाइप करने की कोशिश कर रहा है।


यदि आप यहां पहुंचे हैं क्योंकि आपका फेसबुक बटन टेक्स्ट सभी कैप्स में दिखाई देता है तो बस इस android:textAllCaps="false" जोड़ें android:textAllCaps="false" आपकी xml फ़ाइल में। यह मेरे लिए काम किया।





android-styles