我所拥有的是2个线性布局(左和右),每个布局由垂直滚动的recyclerView组成,它们相对于彼此的位置滚动。左边的一个是相对于它的头部是静态的...而右边的一个需要是相对于其标题水平滚动,recyclelerview垂直滚动..(标题不需要垂直滚动)。我已经尝试过nestedscrollview但是标题滚动出视图。 布局平滑滚动,而在水平但垂直方向上滞后
这是代码: SavingSecondFrag.java 这是片段。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_saving_second, container, false);
ButterKnife.bind(this, view);
recyclerViewsInitializations();
prepareSavingsData();
recycler_left.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
left_scroll = true;
right_scroll = false;
return false;
}
});
recycler_right.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
left_scroll = false;
right_scroll = true;
return false;
}
});
recycler_left.addOnScrollListener(new OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, final int dx, final int dy) {
super.onScrolled(recyclerView, dx, dy);
if (left_scroll) {
recycler_right.scrollBy(dx, dy);
View current = getActivity().getCurrentFocus();
}
}
});
recycler_right.addOnScrollListener(new OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, final int dx, final int dy) {
super.onScrolled(recyclerView, dx, dy);
if (right_scroll) {
recycler_left.scrollBy(dx, dy);
Log.e("TAG", dx + " and " + dy);
}
}
});
return view;
}
这是布局 对不起它有点长.. fragment_saving_code.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="40dp"
android:layout_height="80dp"
android:layout_gravity="center_vertical"
android:background="@color/colorPrimary"
android:gravity="bottom"
android:padding="4dp"
android:text=""
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:layout_width="130dp"
android:layout_height="80dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="1dp"
android:background="@color/colorPrimary"
android:gravity="bottom"
android:padding="4dp"
android:text="Member Name"
android:textColor="@android:color/white"
android:textSize="16sp" />
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_left"
android:layout_width="170dp"
android:layout_height="match_parent" />
</LinearLayout>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<LinearLayout
android:layout_width="1200dp"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="200dp"
android:layout_height="80dp"
android:layout_marginLeft="1dp"
android:orientation="vertical">
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:background="@color/colorPrimary"
android:gravity="center"
android:text="Total Saving"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal"
android:weightSum="2">
<TextView
android:layout_width="100dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginRight="0.5dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:gravity="center"
android:text="Group"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:layout_width="100dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginLeft="0.5dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:gravity="center"
android:text="Personal"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="200dp"
android:layout_height="80dp"
android:layout_marginLeft="1dp"
android:orientation="vertical">
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:background="@color/colorPrimary"
android:gravity="center"
android:text="Planned Saving"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal"
android:weightSum="2">
<TextView
android:layout_width="100dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginRight="0.5dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:gravity="center"
android:text="Group"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:layout_width="100dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginLeft="0.5dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:gravity="center"
android:text="Personal"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
<TextView
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="1dp"
android:background="@color/colorPrimary"
android:gravity="bottom"
android:padding="4dp"
android:text="Total Refunded"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="1dp"
android:background="@color/colorPrimary"
android:gravity="bottom"
android:padding="4dp"
android:text="Total Balance"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="1dp"
android:background="@color/colorPrimary"
android:gravity="bottom"
android:padding="4dp"
android:text="Total Interest"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
<LinearLayout
android:layout_width="400dp"
android:layout_height="80dp"
android:layout_marginLeft="1dp"
android:orientation="vertical">
<TextView
android:layout_width="400dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:background="@color/colorPrimary"
android:gravity="center"
android:text="Current Saving"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal"
android:weightSum="4">
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginRight="0.5dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:gravity="center"
android:text="Group"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginRight="0.5dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:gravity="center"
android:text="Personal"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginRight="0.5dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:gravity="center"
android:text="Optional"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginLeft="0.5dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:gravity="center"
android:text="Child"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
<TextView
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="1dp"
android:background="@color/colorPrimary"
android:gravity="bottom"
android:padding="4dp"
android:text="Refund"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="16sp" />
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_right"
android:layout_width="1200dp"
android:layout_height="match_parent" />
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
答案 0 :(得分:0)
主要问题是您使用的是复杂的UI层次结构,它具有多个嵌套布局。
它会降低应用程序的性能。
解决方案是您应该进行优化以使层次结构级别尽可能地最低。 F 或示例,您可以使用RelativeLayout或ConstraintsLayout而不是许多嵌套的LinearLayouts 。
此外,在上面的代码中,您使用包含许多子视图的HorizontalView。您可以尝试将其替换为具有更好性能的其他UI元素 例如,您应该考虑使用TabBar和ViewPager。