android 中的评分栏 - 重置值
Rating bar in android - Reset value
我正在使用评级栏将某个字段标记为收藏。用户应该能够在将来的某个时间取消标记它。但是一旦我设置它,on-click 侦听器就无法处理该项目。
XML代码
<RatingBar
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numStars="1"
android:stepSize="1"
android:id="@+id/fav"/>
JAVA代码
fav.setOnClickListener(new View.OnClickListener(){ //fav is a ratingbar
public void onClick(View view){
favRest = !favRest; //A boolean variable which is set/reset each time it is clicked
if(favRest)
{ fav.setRating(1.0f);
addFav(uname,hotelName);
}
else{
fav.setRating(0.0f);
removeFav(uname,hotelName);
}
}
});
一旦您 rate
,就无法 clear
使用触摸 RatingBar
进行评分。您只能从 1.0 to 5.0
.
更改速率值
为了 clear/reset
率值,您必须使用其他操作,例如添加 Clear/Reset
Button
.
在Button
点击监听器中,可以reset
使用setRating(0.0)
评分值
resetButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Reset
ratingBar.setRating(0.0);
}
});
更新:
在您的 RatingBar
中,您使用的是 android:numStars="1"
和 android:stepSize="1"
。因此,一旦您 rate 1
无法通过在 RatingBar
上使用触摸来 rate 0
从我的角度来看:
- 您可以使用
ImageView
代替 RatingBar
- 在
res/drawable
文件夹中为 favorite
和 unfavorite
添加两个不同的图标
- 根据检查
favRest
值将所需图标设置为 ImageView
。
试试这个:
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:id="@+id/fav" />
imageview = (ImageView) findViewById(R.id.fav);
fav.setOnClickListener(new View.OnClickListener(){ //fav is a ratingbar
public void onClick(View view){
favRest = !favRest; //A boolean variable which is set/reset each time it is clicked
if(favRest)
{
imageview.setImageResource(R.drawable.icon_favorite);
addFav(uname,hotelName);
}
else
{
imageview.setImageResource(R.drawable.icon_unfavorite);
removeFav(uname,hotelName);
}
}
});
希望对你有所帮助~
我正在使用评级栏将某个字段标记为收藏。用户应该能够在将来的某个时间取消标记它。但是一旦我设置它,on-click 侦听器就无法处理该项目。
XML代码
<RatingBar
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numStars="1"
android:stepSize="1"
android:id="@+id/fav"/>
JAVA代码
fav.setOnClickListener(new View.OnClickListener(){ //fav is a ratingbar
public void onClick(View view){
favRest = !favRest; //A boolean variable which is set/reset each time it is clicked
if(favRest)
{ fav.setRating(1.0f);
addFav(uname,hotelName);
}
else{
fav.setRating(0.0f);
removeFav(uname,hotelName);
}
}
});
一旦您 rate
,就无法 clear
使用触摸 RatingBar
进行评分。您只能从 1.0 to 5.0
.
为了 clear/reset
率值,您必须使用其他操作,例如添加 Clear/Reset
Button
.
在Button
点击监听器中,可以reset
使用setRating(0.0)
resetButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Reset
ratingBar.setRating(0.0);
}
});
更新:
在您的 RatingBar
中,您使用的是 android:numStars="1"
和 android:stepSize="1"
。因此,一旦您 rate 1
无法通过在 RatingBar
rate 0
从我的角度来看:
- 您可以使用
ImageView
代替RatingBar
- 在
res/drawable
文件夹中为favorite
和unfavorite
添加两个不同的图标 - 根据检查
favRest
值将所需图标设置为ImageView
。
试试这个:
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:id="@+id/fav" />
imageview = (ImageView) findViewById(R.id.fav);
fav.setOnClickListener(new View.OnClickListener(){ //fav is a ratingbar
public void onClick(View view){
favRest = !favRest; //A boolean variable which is set/reset each time it is clicked
if(favRest)
{
imageview.setImageResource(R.drawable.icon_favorite);
addFav(uname,hotelName);
}
else
{
imageview.setImageResource(R.drawable.icon_unfavorite);
removeFav(uname,hotelName);
}
}
});
希望对你有所帮助~