2

当我在我的 ListView 的 TableRow 中有一个 RatingBar时,onListItemClick当我触摸一行时我不会被触发。当我这样做bar.setVisibility(View.GONE)或只是删除控件时,这些行可以再次单击。

如何做到这一点,以便当我添加 RatingBar 时,onListItemClick仍然会为该行解雇?我已经尝试设置,focusable="false"但它仍然无法正常工作。

想法???

这是 TableRow 中 RatingBar 的 XML:

<TableRow
            android:id="@+id/tableRow2x"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content">

            <RatingBar 
      android:id="@+id/rtbProductRating"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      android:numStars="5"
      android:rating="3.5"
      android:layout_marginLeft="8dip"
      android:layout_marginTop="3dp"
      android:layout_marginBottom="3dp"
      android:isIndicator="false"
      android:focusable="false"
      android:focusableInTouchMode="false"
      style="@style/starRatingBar"  
/>  

            </LinearLayout>

        </TableRow>

这是我的代码:

public class MainFragment extends ListFragment {

    public void onListItemClick(ListView parent, View v, int position, long id)
    {
        //... does stuff
    }
4

2 回答 2

1

onClick 事件已被 RatingBar 拦截,因此不会触发 onListItemClick。

您可以扩展 RatingBar 类,并重写 onTouchEvent 方法,返回 false。

@Override
public boolean onTouchEvent(MotionEvent event) {
    super.onTouchEvent(MotionEvent event)
    return false;
}
于 2012-07-28T02:01:46.503 回答
0

将 RatingBar 设置为此将修复问题 ratingBar.setIsIndicator(true);

于 2015-05-21T13:34:53.207 回答