के साथ काम नहीं कर रहा है मैं एंड्रॉइड पर काम कर रहा हूं। मैं चाहता हूं कि मेरी सूची क्षैतिज रूप से अपनी सामग्री को लपेटें और सभी चौड़ाई को भरने के लिए न देखें। Wrap_content गुण काम नहीं कर रहे हैं। क्या करें?एंड्रॉइड: wrap_content ListView
उत्तर
Romain Guy के रूप में (Google इंजीनियर यूआई टूलकिट पर काम करता है) ने अपनी पोस्ट
चौड़ाई को wrap_content
पर सेट करके आप सूची दृश्य को अपने बच्चों के सबसे व्यापक के रूप में व्यापक रूप से बता रहे हैं। इसलिए सूची दृश्य को अपने आइटमों को मापना होगा और एडाप्टर पर getView() को कॉल करने के लिए आइटम प्राप्त करना होगा। यह लेआउट पास की संख्या, पैरेंट लेआउट का व्यवहार, आदि
तो यदि आप अपनी सूची दृश्य की लेआउट चौड़ाई या लेआउट ऊंचाई wrap_content
पर सेट करते हैं तो सूची दृश्य प्रत्येक दृश्य को मापने का प्रयास करेगा जो उससे जुड़ा हुआ है - जो निश्चित रूप से आप नहीं चाहते हैं।
ध्यान रखें: से बचने के, हर समय listviews या GridViews के लिए wrap_content
की स्थापना अधिक जानकारी के लिए देखें इस Google I/O videoListView
में सूचीदृश्य
I want my list view to wrap its content horizontally and not to fill all the width.
सूची दृश्य के मामले में आप wrap_content नहीं दे सकता, क्योंकि यदि आप सूची दृश्य केवल पहले तीन आइटम (पंक्तियां) दिखाया जाएगा बाकी नजरअंदाज कर दिया जाएगा के लिए wrap_content दे .. तो डॉन ' टी उपयोग wrap_content .. हमेशा fill_parent का उपयोग करें या सूची दृश्य
के लिए match_parent सूची दृश्य पर कुशल डिजाइन के लिए आप देख सकते हैं इस World of ListView
fill_parent प्रयोग न करें। इसे एंड्रॉइड 2.2 में बहिष्कृत किया गया था: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html#FILL_PARENT – spaaarky21
की दुनिया के लिए आदेश में के बारे में बात प्राप्त wrap_content
ऊंचाई, हम CustomListView
उपयोग करने की आवश्यकता कि extends
हमारे मूल ListView
।
MyListView.java
public class MyListView extends ListView {
private android.view.ViewGroup.LayoutParams params;
private int oldCount = 0;
public MyListView(Context context, AttributeSet attrs)
{
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas)
{
if (getCount() != oldCount)
{
int height = getChildAt(0).getHeight() + 1 ;
oldCount = getCount();
params = getLayoutParams();
params.height = getCount() * height;
setLayoutParams(params);
}
super.onDraw(canvas);
}
}
इस तरह से अपनी
layout
उपयोग कस्टम दृश्य में
,
layout.xml
<com.yourpackagename.MyListView
...
android:layout_width="match_parent"
android:layout_height="wrap_content"
... />
पूरी तरह से काम करता है! – beetree
शानदार! जब मैं एक RecyclerView के अंदर ListView का उपयोग करना चाहता था तो मेरे लिए काम किया। – VSG24
यह उत्तर उपयोगी है, लेकिन जब ListView रीसाइक्लर व्यू के अंदर है, स्क्रॉलिंग अपमानजनक प्रतीत होता है। तो असली समाधान मापन विधि पर ओवरराइड करना है। यह उत्तर देखें: http://stackoverflow.com/a/24186596/1901561 – RIscRIpt
यह LinearLayout बनाएं द्वारा लागू किया जा सकता इस उदाहरण की तरह
public class LinearLayoutAdapter {
LinearLayout linearLayout;
ArrayList<String> arrayList
private View rootView;
private static LayoutInflater inflater;
public ChoicesAdapter_(ArrayList<String> arrayList ,LinearLayout linearLayout)
{
this.index =index;
this.arrayList=arrayList;
this.linearLayout=linearLayout;
notifyDataSetChanged();
}
private void notifyDataSetChanged() {
linearLayout.removeAllViews();
for (int i =0;i<getCount();i++){
linearLayout.addView(getView(i,null,null));
}
}
public int getCount() {
return arrayList.size();
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(final int position, View convertView, ViewGroup parent) {
rootView = inflater.inflate(R.layout.row_list, null);
TextView textView = (TextView)rootView.findViewById(R.id.text);
textView.setText(arrayList.get(position));
return rootView;
}
MainActivity उदाहरण
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("Accent");
arrayList.add("Acclaim");
arrayList.add("Accord");
arrayList.add("Achieva");
arrayList.add("Aerio");
arrayList.add("Aerostar");
LinearLayout linearLayout = (LinearLayout)findViewById(R.id.linearLayout);
linearLayoutAdapter= LinearLayoutAdapter(arrayList,linearLayout);
}
}
एक्सएमएल उदाहरण
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:textColor="@color/dark_gray"
android:background="@color/white"
android:textSize="20dp"
android:text="" />
हां, आप यह कर सकते हैं, लेकिन आप सूची दृश्यों के लिए रीसायकल सिस्टम को ढीला (या लागू करने के लिए बहुत कुछ है)। यह कुछ वस्तुओं के लिए ठीक काम करता है, लेकिन कुछ आइटमों के साथ आप सूचीदृश्य का उपयोग न करने और न ही एडाप्टर का उपयोग करने पर विचार कर सकते हैं। –
- 1. एंड्रॉइड - wrap_content
- 2. एंड्रॉइड ListView
- 3. एंड्रॉइड: ListView
- 4. एंड्रॉइड - ListView
- 5. एंड्रॉइड: ListView
- 6. एंड्रॉइड ListView
- 7. ListView
- 8. कस्टमाइज्ड रो लेआउट के साथ ListView - एंड्रॉइड
- 9. ListView
- 10. ViewPager layout_height = wrap_content
- 11. setOnItemClickListener() कस्टम ListView @ एंड्रॉइड
- 12. ListView
- 13. ListView
- 14. एंड्रॉइड में होमस्क्रीन विजेट में ListView भरना
- 15. एंड्रॉइड: ListView में संपादन टेक्स्ट
- 16. एंड्रॉइड लिस्ट एक्टिविटी - ListView के नीचे एक दृश्य कैसे जोड़ें?
- 17. यह लाइनरलाइटआउट एंड्रॉइड का उपयोग करना चाहिए: layout_height = "wrap_content"?
- 18. ListView onClickListener() RadioButton
- 19. ListView
- 20. ListView शीर्ष
- 21. एंड्रॉइड - 2 अलग-अलग रंगों के साथ ListView
- 22. ListView
- 23. एंड्रॉइड
- 24. एंड्रॉइड ListView addFooterView() में पाद लेख जोड़ रहा है?
- 25. एंड्रॉइड: ListView आइटम को कैसे छिपाना है
- 26. एंड्रॉइड - ListView को क्लिक करने योग्य लिंक
- 27. एंड्रॉइड - ListView केवल पहला परिणाम दिखाएं
- 28. एंड्रॉइड पर वर्णमाला के साथ ListView
- 29. ListView
- 30. ListView
यह सलाह बिल्कुल सार्वभौमिक प्रतीत नहीं होती है।ListView/Adapater संयोजन पहले जेनेरिक लोगों की तुलना में अधिक सामान्य और स्केलेबल है, जिसका अर्थ है कि लोगों को मनमानी डेटासेट के साथ wrap_content का उपयोग करने के परिणामों का एहसास भी नहीं हो सकता है। लेकिन यह कहना नहीं है कि ऐसे कई मामले नहीं हैं जहां डेटासेट एक निश्चित या सीमित आकार का है। उन मामलों में, wrap_content का उपयोग करके एक निर्णय कॉल अधिक होगी। – spaaarky21
ऐसा लगता है कि कुछ लिंट के बारे में चेतावनी दी जानी चाहिए - लेकिन वर्तमान में यह नहीं है। –
मुझे नहीं पता कि यह जवाब क्यों स्वीकार किया गया था: यह सवाल का जवाब नहीं देता है। यह रोमेन के गाय पोस्ट को भी तोड़ देता है - जो कि एक पूरी तरह से अलग सवाल था: एक लेआउट को मापने की संख्या - और एक वीडियो को इंगित करता है जो वास्तव में समझाता है कि wrap_content को कम से कम 3 सूची आइटमों के लिए क्यों काम करना चाहिए, और "प्रकार काम "अधिक जटिल सूचियों के लिए (काफी प्रदर्शन लागत पर)। अब तक – Rick77