在 NestedScrollView 中使用 ListView 无法正常工作
Not working properly with using ListView in NestedScrollView
在 Android 中,图像视图应该在滚动开始前消失,但相反。当我将手指放在屏幕上时,如果我在 Imageview 消失之前上下滚动,则滚动视图开始向下滚动,然后 Imageview 开始关闭。这是我的代码。
<android.support.v4.widget.NestedScrollView
android:id="@+id/nestedScroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/user_menu_bg"
android:orientation="vertical">
<ListView
android:id="@+id/menu_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@drawable/menu_list_divider"
android:listSelector="@android:color/transparent"
android:nestedScrollingEnabled="true" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
最好用NonScrollableListView
代替listview。或者使用 RecyclerView
.
尝试
public class NonScrollListView extends ListView {
public NonScrollListView(Context context) {
super(context);
}
public NonScrollListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NonScrollListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);
ViewGroup.LayoutParams params = getLayoutParams();
params.height = getMeasuredHeight();
}
}
在 Android 中,图像视图应该在滚动开始前消失,但相反。当我将手指放在屏幕上时,如果我在 Imageview 消失之前上下滚动,则滚动视图开始向下滚动,然后 Imageview 开始关闭。这是我的代码。
<android.support.v4.widget.NestedScrollView
android:id="@+id/nestedScroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/user_menu_bg"
android:orientation="vertical">
<ListView
android:id="@+id/menu_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@drawable/menu_list_divider"
android:listSelector="@android:color/transparent"
android:nestedScrollingEnabled="true" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
最好用NonScrollableListView
代替listview。或者使用 RecyclerView
.
尝试
public class NonScrollListView extends ListView {
public NonScrollListView(Context context) {
super(context);
}
public NonScrollListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NonScrollListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);
ViewGroup.LayoutParams params = getLayoutParams();
params.height = getMeasuredHeight();
}
}