最近在做一个盘点软件,实现条形码扫描搜索数据库的数据,显示在listview里,但是要显示的属性比较多,屏幕无法全部显示,所以就采用HorizontalScrollView+listview实现右滑。
先上图
下面是布局文件部分内容
<db.SyncHorizontalScrollView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/scrollView1" android:layout_alignParentTop="true" android:scrollbars="none" android:layout_centerHorizontal="true"> <LinearLayout android:id="@+id/linear1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <include layout="@layout/list_item" android:id="@+id/table_title"/> </LinearLayout> </db.SyncHorizontalScrollView> <View android:layout_width="match_parent" android:layout_height="1.5dp" android:background="#686867"/> <db.SyncHorizontalScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/scrollView0" android:layout_alignParentTop="true" android:scrollbarSize="5dp" android:layout_centerHorizontal="true"> <LinearLayout android:id="@+id/linear" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <ListView android:id="@+id/list" android:divider="#B4B3B3" android:dividerHeight="1.0dip" android:scrollbars="none" android:background="@drawable/listview_bg" android:cacheColorHint="@android:color/transparent" android:fadingEdge="none" android:layout_width="fill_parent" android:layout_height="match_parent" > </ListView> </LinearLayout> </db.SyncHorizontalScrollView>
include布局是listview上面的布局,就是它跟listview关联滚动。
HorizontalScrollView是自己自定义的,代码如下:
package db; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.HorizontalScrollView; public class SyncHorizontalScrollView extends HorizontalScrollView { private View mView; public SyncHorizontalScrollView(Context context) { super(context); } public SyncHorizontalScrollView(Context context, AttributeSet attrs) { super(context, attrs); } protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if(mView!=null){ mView.scrollTo(l, t); } } public void setScrollView(View view){ mView = view; } }
用法:
scrollView0=(SyncHorizontalScrollView)findViewById(R.id.scrollView0);
scrollView1=(SyncHorizontalScrollView)findViewById(R.id.scrollView1);
scrollView0.setScrollView(scrollView1);
scrollView1.setScrollView(scrollView0);
这样就可以相互滚动了。