2012-07-10 12 views
8

से GridView तत्वों शुरू मैं एक ऐप्स जहां मैं चाहता हूँ gridview बाईं "दाएं से बाएं भाषाओं के लिए उपयोग करने के लिए" करने के लिए सही से भरे जाने वाले कर रही हूँ, मैं GridView गुरुत्वाकर्षण सही करने के लिए सेट करने की कोशिश की लेकिन यह काम नहीं किया ... मेरा ग्रिडव्यू लेआउट नीचे है।सही

अग्रिम

<RelativeLayout 
    android:id="@+id/grid_layout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@+id/show_info" 
    android:gravity="right" > 

    <GridView 
     android:id="@+id/channel_grid" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_centerHorizontal="true" 
     android:columnWidth="90dp" 
     android:gravity="right" 
     android:horizontalSpacing="10dp" 
     android:numColumns="auto_fit" 
     android:stretchMode="columnWidth" 
     android:verticalSpacing="10dp" > 
    </GridView> 
</RelativeLayout> 

उत्तर

4

मुझे नहीं लगता कि GridView मन में भाषाओं होने डिजाइन किया गया था धन्यवाद। थंबनेल छवियों की व्यवस्था के लिए यह एक दृश्य घटक है।

आप अपने अनुकूलक को संशोधित करने और यह प्रति पंक्ति प्रत्येक आइटम का क्रम उलटने की अनुमति देकर इस समस्या का समाधान कर सकता है। हालांकि, आपको अपने एडाप्टर को उस काम को करने के लिए प्रति पंक्ति वस्तुओं की मात्रा बताना होगा।

उस के शीर्ष पर है, तो अंतिम पंक्ति संभव से कम आइटम नहीं है, तो आप बाईं भरने के लिए खाली डमी आइटम पेश करने की जरूरत है।

+1

दरअसल, यह 4.2 के रूप में खाते में 'लेआउट डायरेक्शन' लेता है। मैंने स्रोत के कुछ अतिरिक्त लिंक के साथ अपना जवाब अपडेट किया। – Jelle

+0

यह एक अच्छा संकेत था, धन्यवाद। मेरे ऐप में ग्रिड व्यू में कॉलम की एक निश्चित संख्या है और इस तरह मैं आरटीएल दिशा अनुकरण कर सकता हूं। –

2

आप कोशिश कर सकते हैं

android:layoutDirection="rtl" 

यह आमतौर पर पाठ के लिए है और मैं एक GridView पर प्रभाव क्या पता नहीं है। (ref)

एक और बात करने की कोशिश करना

android:stackFromBottom="true" 

है लेकिन अगर आप आइटम ऊपर से नीचे और सही-से-बाएँ (ref)

+0

stackFromBottom पहली बात थी जिसके बारे में मैं सोच रहा था, लेकिन इससे मदद नहीं मिली। – user1940676

+0

त्रुटि: पैकेज 'एंड्रॉइड' –

+0

में विशेषता 'लेआउट डायरेक्शन' के लिए कोई संसाधन पहचानकर्ता नहीं मिला है –

5

मुझे लगता है कि आदेश की जरूरत है यह काम नहीं करेगा आपका सबसे अच्छा अनुमान GridView source से कोड कॉपी करना है और बाएं से उपयोग करने के लिए मापने/लेआउटिंग को बदलना है।

अद्यतन: विचारों के लिए लेआउट दिशा केवल API स्तर 17 (4.2) में पेश की गई थी। आप 4.2 और 4.1 में GridView.java तुलना हैं, तो आप विधि makeRow() में उदाहरण के लिए देख सकते हैं कि, layoutDirection, 4.2 के बाद से ध्यान में रखा जाता है, ताकि काम करना चाहिए!

आप android:layoutDirection="rtl" एपीआई स्तर 17 पर के साथ अपने कोड पर अमल करने की कोशिश की?

+0

हाँ मैंने एपीआई 17 पर आरटीएल की कोशिश की है, यह चाल नहीं है। – user1940676

3

आप इस कोशिश कर सकते। जिसमें आप cotents

<gridLayoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" 
    android:columnDelay="0.5" 
    android:directionPriority="row" 
    android:direction="right_to_left" 
    android:animation="@anim/fade" /> 

साथ layout_grid_right_to_left.xml जोड़ने अपने लेआउट फ़ाइल में अपने GridView है निम्न विशेषता है

android:layoutAnimation="@anim/layout_grid_right_to_left" 

एक anim फ़ोल्डर बनाएँ इसके अलावा सामग्री के साथ एक ही anim फ़ोल्डर में fade.xml जोड़ने

<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:fromAlpha="0.0" android:toAlpha="1.0" 
    android:duration="@android:integer/config_longAnimTime" /> 

ये सिर्फ आपके संदर्भ के लिए हैं। कृपया अपनी आवश्यकताओं/आवश्यकताओं के अनुरूप विशेषताओं को जोड़ने/निकालने में संकोच न करें।

2

आप XML में अपनी gridview और उसके आइटम के सभी के लिए यह कोशिश कर सकते हैं:

android:rotationY="180" 

तुम भी android:layoutDirection="rtl" उपयोग कर सकते हैं।यह आपकी समस्या का समाधान कर सकता है।

+1

सही ans.thanks :) – Jas

1

ऐसा करने का एक मूर्ख तरीका है लेकिन यह पूरी तरह से काम करता है।

ग्रिडव्यू में और अपने आइटम कंटेनर (ग्रिड व्यू सेल के लिए आपका कस्टम व्यू) में android:ScaleX=-1 बनाएं, इसलिए आपका लेआउट दाएं से बाएं से शुरू हो गया है!

आशा है कि यह सहायता

+0

lol। यह काम करता है, यह एंड्रॉइड है: स्केलएक्स = "- 1" हालांकि। –