У меня есть следующий макет:полностью отображается ListView в Scrollview
<ScrollView
android:id="@+id/scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:overScrollMode="never" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/btnStart"
android:layout_width="match_parent"
android:layout_height="@dimen/default_button_height"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:background="@drawable/rounded_alpha_button"
android:text="@string/no_ora_inizio"
android:textColor="@color/labels"
android:textSize="@dimen/button_font_size" />
<ListView
android:id="@+id/listTargets"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/activity_vertical_margin" />
</LinearLayout>
</ScrollView>
Я не мог изменить структуру и внутри ListView я должен добавить список адаптеров определяется как:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/alpha_white" >
<TextView
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_toLeftOf="@+id/counterContainer"
android:ellipsize="end"
android:gravity="center_vertical"
android:textColor="@color/labels"
android:textSize="@dimen/label_font_size" />
<LinearLayout
android:id="@+id/counterContainer"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_marginRight="8dp"
android:gravity="center_vertical"
android:orientation="horizontal" >
<Button
android:id="@+id/btnSub"
android:layout_width="35dp"
android:layout_height="35dp"
android:background="@drawable/circular_alpha_button"
android:gravity="center"
android:lineSpacingExtra="6dp"
android:text="-"
android:textColor="@color/labels"
android:textSize="@dimen/label_big_font_size" />
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:gravity="center"
android:text="0"
android:textColor="@color/labels"
android:textSize="@dimen/label_font_size" />
<Button
android:id="@+id/btnAdd"
android:layout_width="35dp"
android:layout_height="35dp"
android:background="@drawable/circular_alpha_button"
android:gravity="center"
android:lineSpacingExtra="7dp"
android:text="+"
android:textColor="@color/labels"
android:textSize="@dimen/label_big_font_size" />
</LinearLayout>
</RelativeLayout>
Проблема в том, что список адаптеров не полностью показан.
Я знаю, что неправильно установить ListView внутри ScrollView, я уже нашел другой поток, где предлагается использовать LinearLayout вместо ListView. Я попытался, но с LinearLayout ui отображается правильно, но я не могу обновить адаптер, notifyDataSetChanged() не обновляет текстовый id/text2, который связан с кнопками btnSub и btnAdd.
Теперь я пытаюсь найти другое решение для использования ListView или другого типа представления.
Я нашел следующий способ, чтобы установить высоту ListView:
public void setListViewHeightBasedOnChildren(ListView listView) {
if (mAdapter == null)
return;
int totalHeight = 0;//it is the ListView Height
for (int i = 0, len = mAdapter.getCount(); i < len; i++) {
View listItem = mAdapter.getView(i, null, listView);
listItem.measure(0, 0);
int list_child_item_height = listItem.getMeasuredHeight()+listView.getDividerHeight();//item height
totalHeight += list_child_item_height; //
}
ViewGroup.LayoutParams params = listTargets.getLayoutParams();
params.height = (totalHeight + (listTargets.getDividerHeight() * (listTargets.getCount() - 1)));
listTargets.setLayoutParams(params);
listTargets.requestLayout();
}
, но и с помощью этого метода высота ListView не установлена, как я хочу.
Мне нужно, чтобы список адаптеров (высота каждого адаптера может отличаться каждый раз) полностью отображался без дополнительной прокручиваемой панели.
У вас есть идея?
С уважением
как я уже писал, не работает для меня – user2672950