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




android-5.0-lollipop android-button (12)

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

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

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

FWIW मेरी घोषणा में निम्नलिखित कथन शामिल हैं:

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

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


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

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

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"/>

उम्मीद है की यह मदद करेगा।


इस पंक्ति को शैली में जोड़ें

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


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


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

मान -21 / शैलियों में। 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


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

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

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

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


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

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

यह गतिविधि के लिए एक शैली के लिए पर्याप्त नहीं है (मेरी गतिविधि में एक शैली थी), क्योंकि शैली ऑलकेप्स संपत्ति के लिए चूक हो सकती है। आपको स्पष्ट रूप से, गतिविधि में, उस संपत्ति को असत्य पर सेट करना होगा।

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


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

  1. अपने layout-v21 में android:textAllCaps="false" का उपयोग करें

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

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

नोट : public void setAllCaps(boolean allCaps) , android:textAllCaps API संस्करण 14 से available हैं।


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


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

android:textAllCaps="false"

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


यहाँ मैंने अपने मूल्यों / थीमों में क्या किया है। 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>

लॉलीपॉप डिफ़ॉल्ट "textAllCaps true" के साथ आता है, इसलिए आपको मैन्युअल रूप से इसे गलत करना होगा





android-styles