gpt4 book ai didi

android - 捕获RatingBar点击

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:26 25 4
gpt4 key购买 nike

我似乎无法捕捉到我的评分栏点击。评级栏显示得很好并且具有默认值。唯一的问题是我无法更改任何值或它未启用。我尝试了很多不同的东西(例如在布局中启用,完全用 java 构建它)。它们似乎都没有影响。这是我最新的收视率栏。我一定是在做一些愚蠢的事情,以至于无法捕捉到点击。

Java 代码:

  RatingBar showRatingBar = (RatingBar) findViewById(R.id.showRatingBar);
showRatingBar.setEnabled(true);
showRatingBar.setClickable(true);
showRatingBar.setRating(0);
showRatingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener(){
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
System.out.println("showRating.buildRatingBar: " +rating);
ratingBar.setRating(rating);

}});
showRatingBar.refreshDrawableState();

布局:

         <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<TextView
android:id="@+id/showQualityLabel"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="@string/show_rating_label"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#E6E6E6"
android:textSize="12sp" />

<RatingBar
android:id="@+id/showRatingBar"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="5"
android:numStars="5"
android:rating="0"
android:stepSize="1"/>
</LinearLayout>

提前谢谢你。

克雷格

最佳答案

setOnClickListener() 不起作用是因为 RatingBar 覆盖了 onTouchEvent() 并且从不让 View 处理它,所以 View#performClick() 永远不会被调用(它会调用 OnClickListener)。

派生自 RatingBar 并覆盖 onTouchEvent()

ratingBar.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
float touchPositionX = event.getX();
float width = ratingBar.getWidth();
float starsf = (touchPositionX / width) * 5.0f;
int stars = (int)starsf + 1;
ratingBar.setRating(stars);

Toast.makeText(MainActivity.this, String.valueOf("test"), Toast.LENGTH_SHORT).show();
v.setPressed(false);
}
if (event.getAction() == MotionEvent.ACTION_DOWN) {
v.setPressed(true);
}

if (event.getAction() == MotionEvent.ACTION_CANCEL) {
v.setPressed(false);
}




return true;
}});

关于android - 捕获RatingBar点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13535640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com