所以,我在布局文件中有一个带有listview的片段。该列表视图上方是带有徽标的图像视图。
我面临的问题是我无法将滚动条设置为整个布局。 我在其他帖子上有红色,您不应该这样做,但是如果我必须以其他方式执行的话,我必须重做很多代码。
我也从API获取数据,元素的数量可以改变。这就是为什么我使用列表视图。
我对布局类型没有偏好。目前,我正在使用ScrollView布局。
private void Update()
{
Vector3 mouse = Camera.main.ScreenToWorldPoint(Input.mousePosition);
if (Input.GetMouseButton(0))
{
if (mouse.y > 0f)
{
}
else
{
}
}
}
有人可以解决这个问题吗?
答案 0 :(得分:0)
尝试将布局xml更改为:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.HomeFragment"
android:fillViewport="true">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:src="@drawable/logo"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ListView
android:id="@+id/listFemArrangementer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:listSelector="@color/white"
android:scrollbars="none"/>
</ScrollView>
</LinearLayout>
答案 1 :(得分:0)
可以使用NestedScrollView
,但首先最好使用RecyclerView
而不是ListView
。
下面是演示此布局的简单xml
<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.HomeFragment"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:src="@drawable/logo"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/listFemArrangementer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none"/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
答案 2 :(得分:0)
找到了解决我问题的方法。
我做了一个listviewclass并禁用了滚动等。
public class ScrollDisabledListView extends ListView {
private int mPosition;
public ScrollDisabledListView(Context context) {
super(context);
}
public ScrollDisabledListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScrollDisabledListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
final int actionMasked = ev.getActionMasked() & MotionEvent.ACTION_MASK;
if (actionMasked == MotionEvent.ACTION_DOWN) {
// Record the position the list the touch landed on
mPosition = pointToPosition((int) ev.getX(), (int) ev.getY());
return super.dispatchTouchEvent(ev);
}
if (actionMasked == MotionEvent.ACTION_MOVE) {
// Ignore move events
return true;
}
if (actionMasked == MotionEvent.ACTION_UP) {
// Check if we are still within the same view
if (pointToPosition((int) ev.getX(), (int) ev.getY()) == mPosition) {
super.dispatchTouchEvent(ev);
} else {
// Clear pressed state, cancel the action
setPressed(false);
invalidate();
return true;
}
}
return super.dispatchTouchEvent(ev);
}
然后我在布局(scrollview)中使用了此类
<no.packagename.ScrollDisabledListView
android:id="@+id/listFemArrangementer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:listSelector="@color/white"
android:scrollbars="none"
android:padding="0px"
>
</no.packagename.ScrollDisabledListView>
然后我找到并使用了适配器的列表高度
listView.setAdapter(adapter);
if(adapter != null){
int totalHeight = 0;
for (int i = 0; i < adapter.getCount(); i++) {
View listItem = adapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (adapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}