在我的例子活動,我有
- 包含
一個ListView - 包含多個HorizontalScrollView
- 一組的TextViewHorizontalScrollView裏面的ListView:輕微的垂直滾動停止水平滾動
水平滾動的經驗是相當糟糕雖然。
當我啓動一個水平滾動(或一扔)時,我必須非常小心地使它工作。
只要水平滾動包含(小)垂直分量,垂直ListView滾動接管並完全停止水平滾動。
有關如何改善此問題的任何建議?
由於提前,
馬克
import android.app.Activity;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class Test extends Activity
{
private final static int N = 20;//number of HorizontalScrollView
private final static int M = 20;//number of TextViews inside a single HorizontalScrollView
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
//create a list of HorizontalScrollViews
final HorizontalScrollView[] hors = new HorizontalScrollView[N];
for (int i = 0; i < hors.length; i++)
{
hors[i] = new HorizontalScrollView(this, null);
hors[i].setMinimumHeight(60);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.HORIZONTAL);
hors[i].addView(ll);
for (int j = 0; j < M; j++)
{
TextView t = new TextView(Test.this);
t.setText("HorizontalScrollView: "+i+"; TextView: "+j);
t.setMinimumHeight(40);
ll.addView(t);
}
}
//add a ListView
ListView list = new ListView(this);
layout.addView(list);
list.setAdapter(new BaseAdapter()
{
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
return hors[position];
}
@Override
public long getItemId(int position)
{
return 0;
}
@Override
public Object getItem(int position)
{
return hors[position];
}
@Override
public int getCount()
{
return N;
}
});
setContentView(layout);
}
}
我想我能改寫了一個問題,「有可能是一個子視圖接收ListView的父消耗的TouchEvents」。這將允許ListView處理我移動的垂直分量,HorizontalScrollView可以處理移動的水平分量。 –