Lau*_*ura 5 android textview android-listview
在列表视图中,我在每行上都有一个被截断的文本,因为它太长了.所以我在textView上设置了setMovementMethod()以使其可滚动.但是现在无法单击ListView.我怎么解决这个问题?
下面是适配器的getView()方法.
@Override
public View getView(int position, View convertView, final ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_row, null);
holder = new ViewHolder();
holder.nameLabel = (TextView) convertView.findViewById(R.id.name);
convertView.setTag(holder);
holder.nameLabel.setMovementMethod(ScrollingMovementMethod.getInstance());
} else {
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}
Run Code Online (Sandbox Code Playgroud)
毕竟我自己解决了这个问题。我在适配器内实现了 OnTouchListener 并将其设置在文本视图上。触摸事件的逻辑是:我检查触摸事件是点击还是滑动。如果是滑动,则将执行滑动/滚动,如果是点击,我将调用用于 listView 的单击事件的方法。
@Override
public boolean onTouch(View v, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
mIsScrolling = false;
mDownX = motionEvent.getX();
break;
case MotionEvent.ACTION_MOVE:
float deltaX = mDownX - motionEvent.getX();
if ((Math.abs(deltaX) > mSlop)) { // swipe detected
mIsScrolling = true;
}
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
if (!mIsScrolling) {
openNewScreen(v); // this method is used for click listener of the ListView
}
break;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4081 次 |
| 最近记录: |