Android üzerinde çalışıyorum. Liste görünümümün içeriğini yatay olarak kaydırmasını ve tüm genişliği doldurmamasını istiyorum. Wrap_content özellikleri çalışmıyor. Ne yapalım?Android: wrap_content ListView ile çalışıyor
Liste Görünümü durumundacevap
Romain Guy olarak görebilirsiniz fill_parent kullanmak veya Liste View verimli tasarım için Liste Görünümü
için match_parent Eğer alt öğelerinden en geniş kadar geniş olması ListView anlatıyorsun wrap_content
genişliği ayarlayarak görevinden
Said (UI araç seti Google Mühendisi işleri). ListView bu nedenle öğelerini ölçmeli ve Bağdaştırıcıda getView() öğesini çağırması gereken öğeleri almalıdır. Bu, düzen geçişlerinin sayısına, ana düzenin davranışına vb. Bağlı olarak birkaç kez olabilir.
ListView öğenizin düzen genişliğini veya düzen yüksekliğini wrap_content
olarak ayarlarsanız, ListView her bir görünümü ölçmeye çalışacaktır. ona bağlı - ki kesinlikle ne istediğinizi değil.
Unutmayın: önlemek daha fazla ayrıntı için, her zaman listviews veya gridviews için wrap_content
ayarına bakın bu Google I/O videoListView
ulaşmak amacıyla liste görünümü
I want my list view to wrap its content horizontally and not to fill all the width.
sen 'Liste Görünümünde sadece ilk üç madde (satırlar) gerisi yok sayılacaktır gösterilir için wrap_content verirsen çünkü wrap_content vermek .. Yani yok edemez kullanmamaktasınız wrap_content .. Her zaman bu World of ListView
fill_parent kullanmayın. Android 2.2'de kullanımdan kaldırıldı: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html#FILL_PARENT – spaaarky21
dünya hakkında wrap_content
yüksekliği konuşurken, biz CustomListView
kullanmak gerekir extends
bizim yerel ListView
.
MyListView.java O oluşturma LinearLayout kullanılarak uygulanabilir
<com.yourpackagename.MyListView
...
android:layout_width="match_parent"
android:layout_height="wrap_content"
... />
Mükemmel çalışıyor! – beetree
Fantastik! Bir RecyclerView içinde bir ListView kullanmak istediğimde benim için çalıştı. – VSG24
Bu yanıt yararlıdır, ancak ListView bir RecyclerView içinde olduğunda, yukarı kaydırmak buggy gibi görünür. Yani gerçek çözüm onMeasure yöntemini geçersiz kılmaktır. Bu cevaba bakınız: http://stackoverflow.com/a/24186596/1901561 – RIscRIpt
layout
kullanımı özel görünümünde
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.xml bu örnekte olduğu gibi
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 örneği
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);
}
}
XML örneği
<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="" />
Evet, bunu yapabilirsiniz, ancak liste görünümleri için geri dönüşüm sistemini gevşetirseniz (ya da uygulamak için çok şeyiniz varsa). Birkaç öğe için iyi çalışır, ancak birkaç öğe ile, bir bağdaştırıcıdan liste görünümünü kullanmadığınızı düşünebilirsiniz. –
- 1. ListView scrollview öğesi wrap_content olarak ayarlanmadı
- 2. Android ListView ile Düğme seçilemez (Tıklanabilir)
- 3. Özelleştirilmiş Sıra Düzeni ile ListView - Android
- 4. Android ListView, ben özel adaptör ile bir ListView kullanıyorum
- 5. Android ListView Renklerini Özelleştirme?
- 6. Android ListView :: setItemChecked çalışmıyor
- 7. Android ListView
- 8. android filter listview sadece ilk arama için çalışıyor
- 9. mutiline wrap_content width TextView
- 10. Android: karmaşık satırları ile ListView üzerinde fling algılama
- 11. Android - ListView - demand
- 12. Jsoup.connect() Java ile çalışıyor, Android ile değil
- 13. Checkbox ile Android ListView ve tüm tıklanabilir
- 14. Android ListView ile çalışma nasıl ayarlanır setOnScrollListener?
- 15. Custom ListView Android
- 16. Android ListView setOnScrollListener
- 17. ListView filtre için android
- 18. Android SwipeRefreshLocation bir ListView veya ScrollView değilse
- 19. ListView ile kaydırılabilir bir parça nasıl yapılır
- 20. iOS'ta ListView ile RefreshControl Başarısız
- 21. Android ListView Bağdaştırıcı, görünüm ekleme
- 22. Android tıklanabilir Widget ListView ile tıklanamaz ListItems'de tıklanamaz
- 23. Android ListView, parça örnek
- 24. android checkable listview
- 25. android - listview filtre sayısı
- 26. Android Listview onay kutuları
- 27. android: listview öğesi genişliği fill_parent çalışmıyor
- 28. Java Web Start - Android ile çalışıyor mu?
- 29. wrap_content öğesinin parent ve fill_parent üzerinde birleştirilmesi
- 30. Program aracılığıyla Fling ListView Android
Bu tavsiye tam olarak evrensel görünmüyor.ListView/Adapater kombinasyonu, insanların ilk başta gerçekleştirebileceğinden daha genel ve ölçeklenebilirdir; bu da insanların wrap_content'i keyfi veri kümeleriyle kullanma sonuçlarını fark etmeyeceği anlamına gelir. Ancak bu, veri kümesinin sabit veya sınırlı bir boyutta olduğu pek çok vaka olmadığını söylemez. Bu durumlarda, wrap_content kullanımı daha çok bir yargı çağrısı olur. – spaaarky21
Bu, uyarı vermesi gereken bir şey gibi görünüyor - ama şu anda değil. –
Bu cevabın neden kabul edildiğini bilmiyorum: bu soruya hiç cevap vermiyor. Aynı zamanda Roma'nın Guy görevini de geri çekiyor - ki bu tamamen farklı bir soruydu: bir düzenin ölçülen sayısı - ve wrap_content'in neden en az 3 liste öğesi için çalıştığını açıklayan bir videoya işaret ediyor ve " Daha karmaşık listeler için (önemli bir performans maliyetiyle) çalışın. – Rick77