Android listview动态项目高度
这是更改可见性代码 问题是当项目的高度降低时,Android listview动态项目高度,android,listview,Android,Listview,这是更改可见性代码 问题是当项目的高度降低时,Listview高度匹配。 因此,当我单击每个项目时,不会直接显示在“零件”下 我想在单击项目时,Listviewheight自动展开 borrowListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ @Override public void onItemClick(AdapterV
Listview
高度匹配。
因此,当我单击每个项目时,不会直接显示在“零件”下
我想在单击项目时,Listview
height自动展开
borrowListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
TextView startDate = (TextView)view.findViewById(R.id.borrowStartDate);
TextView endDate = (TextView)view.findViewById(R.id.borrowEndDate);
Button renewBtn = (Button)view.findViewById(R.id.renewBtn);
if ( startDate.getVisibility() == View.GONE) {
startDate.startAnimation(AnimationUtils.loadAnimation(view.getContext(), R.anim.slide_down_and_fade_in));
endDate.startAnimation(AnimationUtils.loadAnimation(view.getContext(), R.anim.slide_down_and_fade_in));
renewBtn.startAnimation(AnimationUtils.loadAnimation(view.getContext(), R.anim.fade_in));
startDate.setVisibility(View.VISIBLE);
endDate.setVisibility(View.VISIBLE);
renewBtn.setVisibility(View.VISIBLE);
}
else {
startDate.setVisibility(View.GONE);
endDate.setVisibility(View.GONE);
renewBtn.setVisibility(View.GONE);
}
}
});
这是一段代码
添加快照 点击刷新按钮后 单击项目时 如果向下滚动,则显示listview的其他部分 我不想滚动 单击项目时,listview会自动获取高度 我认为这个问题与
notifyDataSetChanged()无关代码>使用
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:fillViewport="true">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<WebView
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="gone"
android:id="@+id/rightWebView"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Refresh"
android:backgroundTint="@color/button1"
android:drawableEnd="@drawable/refresh_picto"
android:id="@+id/refreshBorrowBook"
android:onClick="refreshBorrow"
android:layout_marginBottom="10dp"
/>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/borrowBookList"
android:dividerHeight="10dp"
android:divider="@color/main_background"
/>
<TextView
android:text="예약 목록"
android:paddingStart="50dp"
android:visibility="gone"
android:layout_marginTop="15dp"
android:layout_marginBottom="20dp"
android:textColor="#000000"
android:textSize="25sp"
android:background="@drawable/round_shape"
android:backgroundTint="@color/childview_background"
android:id="@+id/reservation_list_text"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/reservationBookList"
android:dividerHeight="10dp"
android:divider="@color/main_background"
/>
</LinearLayout>
</ScrollView>
顺便说一下,您不必切换可见性
希望有助于下面的方法计算每个子视图的高度,您必须在按下Listview中任何子视图的按钮后调用下面的方法以使其可见和不可见
view.getLayoutParams().Height=value
更改可见性后调用notifyDataSetChanged()代码>它会起作用。你的问题不清楚。请添加一些快照它看起来怎么样,以及你希望它看起来怎么样。如果没有visual,则不清楚。我添加了borrowListView.setOnItemClickListener()
的代码结尾,但仍然不只是显示所有子视图,而是在textview
s'变为可见时出现滚动
view.getLayoutParams().Height=value
public class Utility {
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST);
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
}
Utility.setListViewHeightBasedOnChildren(myListView);