Android双列滑动表格(双表头不动)
※效果
※用法
package com.cd.slidetest; import android.os.Bundle; import android.app.Activity; import android.graphics.Color; import android.view.GestureDetector; import android.view.Menu; import android.view.MotionEvent; import android.view.GestureDetector.SimpleOnGestureListener; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.ScrollView; public class MainActivity extends Activity implements OnScrollChangedListener{ private GestureDetector mGestureDetector = null; private HScrollView mItemRoom = null; private ScrollView mVertical = null; private HScrollView mTimeItem = null; private LinearLayout mContain = null; @SuppressWarnings("deprecation") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mGestureDetector = new GestureDetector(mGestureListener); makeItems(); setContentView(mContain); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } private void makeItems(){ mItemRoom = new HScrollView(this, mGestureDetector); mItemRoom.setListener(this); LinearLayout VLayout = new LinearLayout(this); VLayout.setOrientation(LinearLayout.VERTICAL); for(int i = 0;i < 20;i++){ LinearLayout HLayout = new LinearLayout(this); for(int j = 0;j < 10;j++){ TextItem item = new TextItem(this); item.setText(i*10+j + "vh"); item.setBackgroundColor(Color.LTGRAY); LinearLayout.LayoutParams params = new LayoutParams(100,70); HLayout.addView(item, params); } VLayout.addView(HLayout); } mItemRoom.addView(VLayout); mVertical = new ScrollView(this); LinearLayout hlayout = new LinearLayout(this); LinearLayout vlayout = new LinearLayout(this); vlayout.setOrientation(LinearLayout.VERTICAL); for(int i = 0;i < 20;i++){ TextItem item = new TextItem(this); item.setBackgroundColor(Color.BLUE); item.setText(i + "v"); LinearLayout.LayoutParams params = new LayoutParams(100,70); vlayout.addView(item, params); } hlayout.addView(vlayout); hlayout.addView(mItemRoom); mVertical.addView(hlayout); LinearLayout tophlayout = new LinearLayout(this); mTimeItem = new HScrollView(this, mGestureDetector); mTimeItem.setListener(this); LinearLayout layout = new LinearLayout(this); for(int i = 0;i < 10;i++){ TextItem item = new TextItem(this); item.setText(i + "h"); item.setBackgroundColor(Color.GREEN); LinearLayout.LayoutParams params = new LayoutParams(100,70); layout.addView(item,params); } mTimeItem.addView(layout); TextItem item = new TextItem(this); item.setBackgroundColor(Color.RED); LinearLayout.LayoutParams params = new LayoutParams(100,70); tophlayout.addView(item,params); tophlayout.addView(mTimeItem); mContain = new LinearLayout(this); mContain.setOrientation(LinearLayout.VERTICAL); mContain.addView(tophlayout); mContain.addView(mVertical); } private SimpleOnGestureListener mGestureListener = new SimpleOnGestureListener(){ @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if(Math.abs(distanceX) > Math.abs(distanceY)) { return true; } return false; } }; @Override public void onScrollChanged(HScrollView scroll, int x, int y, int oldx, int oldy) { if(scroll == mItemRoom){ mTimeItem.scrollTo(x, y); }else if(scroll == mTimeItem){ mItemRoom.scrollTo(x, y); } } }
※下载地址
http://download.csdn.net/detail/u010785585/8062787
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。