2013-07-22 13 views
7

छोड़ कैसेस्लाइड ExpandableListView

मैं स्क्रीन के दाएँ कोने में ExpandableListView दिखाना चाहते हैं छोड़ दिया करने के लिए DrawerLayout प्रपत्र सही पर ExpandableListView स्लाइड करने के लिए, मैं कैसे ऐसा कर सकते हैं ??

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <ExpandableListView 
     android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/white" 
     android:dividerHeight="0dp" 
     /> 
</android.support.v4.widget.DrawerLayout> 

उत्तर

22

या तो android:layout_gravity="end" या android:layout_gravity="right" (end का उपयोग कर सही-से-बाएँ विन्यास के लिए स्क्रीन के बाईं ओर पर दराज रखा जाएगा)

संपादित

ऐसा नहीं है कि प्रतीत होता है के लिए बदलें android:layout_gravity="start"ActionBarDrawerToggle एक्शन बार होम आइकन (Gravity.START) के समान ही एक दराज की तलाश में है, जो बाएं से दाएं लेआउट दिशानिर्देशों के लिए बाएं तरफ होगा। आप हमेशा सही पर दराज होगा, तो आप इस तरह कुछ कर सकता है:

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer, R.drawable.ic_drawer, R.string.open_drawer, R.string.close_drawer) { 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (item != null && item.getItemId() == android.R.id.home) { 
      if (mDrawer.isDrawerOpen(Gravity.RIGHT)) { 
       mDrawer.closeDrawer(Gravity.RIGHT); 
      } else { 
       mDrawer.openDrawer(Gravity.RIGHT); 
      } 
     } 
     return false; 
    } 
}; 

दराज हमेशा विपरीत कार्रवाई बार होम आइकन हो जाएगा, तो आप Gravity.END बजाय इस्तेमाल कर सकते हैं।

+0

जब मैं उस एप्लिकेशन क्रैश – user1571714

+0

करता हूं तो कृपया लॉगबैक – Karakuri

+0

से स्टैक ट्रेस के साथ अपनी पोस्ट अपडेट करें। मैं अपने एंड्रॉइड: लेआउट_ग्रैविटी = "एंड" का उपयोग करने में सक्षम हूं, बस मेरे छोटे नमूने में से एक के साथ ठीक है, इसलिए कुछ और कारण हो रहा है आपका दुर्घटना – Karakuri

1

यह ActionBar में होम बटन क्लिक करते है जो अपने आप लाइन में चलता में एक बग है:

if (mDrawerToggle.onOptionsItemSelected(item)) { 
    return true; 
} 

लाइनों मैंने कहा निकालने के लिए, आप जहां विधि है:

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    //.... 
} 

और साथ बदलें :

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    if (item != null && item.getItemId() == android.R.id.home) { 
     if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) { 
      mDrawerLayout.closeDrawer(Gravity.RIGHT); 
     } else { 
      mDrawerLayout.openDrawer(Gravity.RIGHT); 
     } 
     return true; 
    } 
    //... 
} 

भी भूल नहीं है सही करने के लिए ListView की गंभीरता को बदलने के लिए: android:layout_gravity="right"

5

मुझे एक ही समस्या है क्योंकि मेरा ऐप अरबी है और दाईं ओर से शुरू होना चाहिए।

यहाँ सब समाधान के परीक्षण के बाद, मैंने पाया है कि सबसे अच्छा है: अपने सूचीदृश्य में getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

  • नहीं है: android:supportsRtl="true"
  • अपनी गतिविधि में इस कोड जोड़ें:

    • प्रकट में इस लाइन को जोड़ने का उपयोग करें: android:layout_gravity="right" क्योंकि अगर आप सही उपयोग करें आप की तरह अधिक Android संस्करण में त्रुटि मिलती है 4.0.4

    समाधान का उपयोग है: android:layout_gravity="start", क्योंकि इस मामले में listview पृष्ठ की गुरुत्वाकर्षण का पालन करता है।

  • संबंधित मुद्दे