2012-11-25 24 views
7

एंड्रॉइड 4.2 रेडियोबटन सही ढंग से प्रदर्शित नहीं करता है जब एंड्रॉइड: drawableLeft का उपयोग किया जाता है। drawableRight ठीक है।एंड्रॉइड 4.2 रेडियोबटन एंड्रॉइड: drawableLeft बग?

बाएं तरफ खींचने योग्य रेडियो बटन ग्राफ़िक ओवरलैप करता है। और कम से कम एंड्रॉइड 2.2-4.1 DrawableLeft के साथ ठीक प्रतीत होता है।

क्या आप इसके लिए कामकाज के बारे में जानते हैं? DrawableLeft को व्यवस्थित रूप से सेट करना इस समस्या को हल करने के लिए काम नहीं करता है।

4.2 एंड्रॉयड मुद्दा

4.2 issue

4,1 एंड्रॉयड सही ढंग से इस renders (यह भी कम से कम एंड्रॉयड 2.2-4.0 इस सही ढंग से भी प्रस्तुत करना)

4.1 is correct

इस के लिए

एंड्रॉयड एक्सएमएल लेआउट कोड :

<RadioButton 
    android:id="@+id/radio_cloud_dropbox" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="10dp" 
    android:drawableLeft="@drawable/dropbox_logo" 
    android:checked="true" 
    android:text="@string/lbl_cloud_dropbox" /> 
+0

मुझे एक ही समस्या का सामना करना पड़ रहा है लेकिन मेरे मामले में मैं canvas.drawText() का उपयोग करके खींचे गए पाठ के साथ गलत संरेखण देखता हूं !! –

+0

यह मेरा प्रश्न है: http://stackoverflow.com/questions/13941270/android-4-2-on-nexus-7-canvas-drawtext-not-working- सही ढंग से –

उत्तर

0

इस बग मेरे अस्थायी समाधान के साथ जावा कोड से कॉल कर सकते हैं TableRow (रों) RadioButton और TextView युक्त TableLayout द्वारा माता-पिता RadioGroup लेआउट को बदलने के लिए किया गया था। भले ही अन्य समाधान भी हैं।

<TableLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <TableRow android:onClick="onDropboxClick" > 
     <RadioButton 
      android:id="@+id/radio_cloud_dropbox" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="10dp" 
      android:onClick="onDropboxClick" /> 

     <TextView 
      android:drawableLeft="@drawable/cloud_logo_dropbox" 
      android:gravity="center_vertical" 
      android:text="Dropbox" /> 
    </TableRow> 

    <TableRow android:onClick="onGoogleDriveClick" > 
     <RadioButton 
      android:id="@+id/radio_cloud_google_drive" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="10dp" 
      android:onClick="onGoogleDriveClick" /> 

     <TextView 
      android:drawableLeft="@drawable/cloud_logo_google_drive" 
      android:gravity="center_vertical" 
      android:text="Google Drive" /> 
    </TableRow> 

</TableLayout> 

हालांकि के रूप में RadioGroup नेस्टेड लेआउट के साथ प्रयोग नहीं किया जा सकता है, जाँच की राज्य के चयन/चयन रद्द करने ईवेंट हैंडलर विधियों में संबंधित गतिविधियों में मैन्युअल रूप से किया जा सकता है:

public void onDropboxClick(View view) { 
    checkRadio(R.id.radio_cloud_dropbox); 
} 

public void onGoogleDriveClick(View view) { 
    checkRadio(R.id.radio_cloud_google_drive); 
} 

private void checkRadio(int radioId) { 
    if (radioId == R.id.radio_cloud_dropbox) { 
     dropboxRadio.setChecked(true); 
     googleDriveRadio.setChecked(false); 
    } else if (radioId == R.id.radio_cloud_google_drive) { 
     dropboxRadio.setChecked(false); 
     googleDriveRadio.setChecked(true); 
    } 
} 
0

यह संभवतः नए लेआउट दिशा समर्थन का एक उत्पाद है जो एंड्रॉइड 4.2 में प्लेटफ़ॉर्म में जोड़ा गया था (यानी। बाएं से दाएं या दाएं से बाएं में लेआउट का समर्थन करने के लिए)। यह इस बात को प्रभावित करता है कि वे बाएं बनाम सही खींचने योग्य सामग्री को कैसे रखते हैं। आपकी android:targetSdkVersion मेनिफेस्ट विशेषता क्या है? तकनीकी रूप से, मेरा मानना ​​है कि, यदि यह 16 या उससे कम निर्धारित है, तो इन लेआउट परिवर्तनों को डिफ़ॉल्ट रूप से अक्षम किया जाना चाहिए, भले ही आपका लोकेल उन्हें अन्यथा सक्षम करे।

मैं http://b.android.com पर एक बग दर्ज करने की अनुशंसा करता हूं, क्योंकि आरटीएल मोड में मैं बटन को दूसरी ओर भी खींचने की उम्मीद करता हूं। इस बीच, आप अपने TextView पर layoutDirection विशेषता जोड़कर लेआउट दिशा को मजबूर करने का प्रयास कर सकते हैं और इसे एलटीआर होने के लिए मजबूर कर सकते हैं, इसलिए ऐसा लगता है कि आप उम्मीद करते हैं। तुम भी setLayoutDirection()

+0

आपके उत्तर के लिए धन्यवाद। एंड्रॉइड सेट करना: 16 से 17 तक targetSdkVersion मदद नहीं करता था। स्पष्ट एंड्रॉइड का भी उपयोग करना: रेडियोबटन या रेडियो ग्रुप में लेआउटडिरेक्शन = "एलटीआर" कुछ भी नहीं बदला। ध्यान दें कि एंड्रॉइड: drawableLeft टूटा हुआ है लेकिन एंड्रॉइड: drawableRight सही ढंग से काम करता है। यह गलत व्यवहार ग्रहण "ग्राफ़िकल लेआउट" में भी देखा जा सकता है जब एपीआई 17 को combobox में चुना जाता है। – petrsyn

+0

मैंने Google को भी बग सबमिट किया है http://code.google.com/p/android/issues/detail?id=40451 – petrsyn

0

यह तय किया गया लगता है एंड्रॉइड 4.2.2 में।

6

आप रेडियो बटन पर उपयोग कर सकते हैं:

बटन @null और drawable बाईं सेट सेट करें कि आपके बटन:

<RadioGroup 
     android:id="@+id/hn_radio_group" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <RadioButton 
      android:id="@+id/rb_Select_by_proposal" 
      style="@style/RadioButtonText" 
      android:checked="true" 
      android:tag="1" 
      android:text="@string/select_by_proposal" /> 

     <RadioButton 
      android:id="@+id/rb_Select_by_first_letter" 
      style="@style/RadioButtonText" 
      android:tag="2" 
      android:text="@string/select_by_first_letter" /> 
    </RadioGroup>  

और इस शैली:

<style name="RadioButtonText"> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:button">@null</item> 
    <item name="android:drawableLeft">@drawable/radio_selector</item> 
    <item name="android:drawablePadding">10dp</item> 
</style> 

अंतरिक्ष के लिए बटन और टेक्स्ट के बीच:

<item name="android:drawablePadding">10dp</item> 
+0

यह वास्तव में समस्या को ठीक नहीं करता है। कस्टम लोगो (ड्रॉपबॉक्स) कहां खींचा जाता है? सवाल का मुद्दा रेडियो चयनकर्ता और कस्टम छवि (ड्रॉपबॉक्स) दोनों को आकर्षित करना था। – petrsyn