Мне нужно поместить несколько списков в LinearLayout. Списки просмотра должны быть обернутыми, чтобы адаптировать список к своим элементам. Мне нужен только один свиток, с помощью которого я могу прокрутить все списки. Я знаю, что не могу использовать вид прокрутки, потому что у списков есть свой прокрутка (но мне не нужны прокрутки списков, потому что они есть в wrap-контенте). Я подумал, что, возможно, поместив списочные представления в LinearLayout, у меня не возникнет проблем с scrollview, но это не сработало, LinearLayout был зафиксирован на экране, scrollview не появился, а просмотры списков завершились прокруткой. Без прокрутки, если у меня есть список в wrap-контенте, они отображаются правильно, но у меня нет прокрутки, и я не вижу lisview под экраном. На самом деле у меня была эта ошибка в течение одного месяца, и я не нашел никакого решения, я в отчаянии :(
Мой код:
XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/detail_info_on_top"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FF003150"
android:orientation="vertical">
<!--<ScrollView android:layout_width="fill_parent"-->
<!-- android:layout_height="fill_parent"-->
<!-- android:fillViewport="true">-->
<LinearLayout
android:id="@+id/layout"
android:scrollbars="vertical"
android:scrollbarAlwaysDrawVerticalTrack="true"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</LinearLayout>
<!--</ScrollView>-->
JAVA
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
...
LinearLayout layout = (LinearLayout)findViewById(R.id.layout);
ArrayList<SectionHolder> shs = SObjectDB.SOBJECTS.get(sobject).detail;
for(SectionHolder sh : shs) {
/** layout by each section */
ListView lsvDetails = new ListView(this);
lsvDetails.setPadding(0, 0, 0, 0);
lsvDetails.setBackgroundColor(0xFFFFFFFF);
lsvDetails.setCacheColorHint(Color.TRANSPARENT);
lsvDetails.setFocusable(false);
lsvDetails.setSelected(false);
lsvDetails.setScrollContainer(false);
lsvDetails.setVerticalScrollBarEnabled(false);
LinearLayout ll = new LinearLayout(this);
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
ll.setLayoutParams(llp);
ll.setOrientation(LinearLayout.VERTICAL);
ll.setFocusable(false);
/** setting section header */
TextView sv = new TextView(this);
sv.setText(sh.name);
sv.setTextSize(15);
sv.setTextColor(0xFFFFFFFF);
sv.setBackgroundColor(0xFF656565);
sv.setWidth(480);
//sv.setTypeface(null, Typeface.BOLD);
ll.addView(sv);
...
LinkedHashMap<String,String> hm;
final ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
hm = new LinkedHashMap<String, String>();
for(FieldHolder fs : fhs) {
hm = new LinkedHashMap<String, String>();
...
hm.put("data", v1);
mylist.add(hm);
}
ListView.LayoutParams lsvp = new ListView.LayoutParams(ListView.LayoutParams.FILL_PARENT, ListView.LayoutParams.WRAP_CONTENT);
lsvDetails.setLayoutParams(lsvp);
lsvDetails.setScrollbarFadingEnabled(false);
lsvDetails.setScrollingCacheEnabled(false);
lsvDetails.setSelector(R.drawable.multi_white_color);
lsvDetails.setDrawSelectorOnTop(false);
lsvDetails.setAdapter(new DetailAdapter(this, mylist, R.layout.grid_detail, new String[]{"label", "data"}, new int[]{R.id.lblName, R.id.lblData}));
ll.addView(lsvDetails);
layout.setVerticalScrollBarEnabled(true);
layout.setScrollbarFadingEnabled(true);
layout.setScrollBarStyle(50331648);
layout.setScrollContainer(true);
layout.setFocusable(true);
layout.setFocusableInTouchMode(true);
layout.addView(ll);
}
}
Как вы можете видеть, я динамически создаю lisviews и помещаю их в макет с заголовком раздела. если у вас есть сомнения, спросите меня, мне нужно найти решение в ближайшее время.
http://www.freeimagehosting.net/image.php?6dea1468bd.png