Android RatingBar实现五星好评

属性

isIndicatorRatingBar   是否为指示器,为true时,用户将无法交互操作,默认为false。

numStars                      显示的星型数量,必须是一个整形值,像“50”,虽然可以设置很大,但一般都是5-10个星星即可。

rating                            设置默认的评分。

stepSize                        评分每次增加的值。建议大于0小于等于1之间最合适。

样式

其中内置了三个样式:

style="?attr/ratingBarStyle":默认样式

style="?android:attr/ratingBarStyleSmall":小样式

style="?android:attr/ratingBarStyleIndicator":指示器样式

 dialog弹框显示好评操作效果图

 

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="@dimen/x582"android:layout_height="wrap_content"android:background="@drawable/shape_while_radius_10dp_style"android:minHeight="@dimen/y280"android:orientation="vertical"android:padding="@dimen/dp_20"><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:gravity="center"android:padding="@dimen/dp_6"android:text="@string/司机评分"android:textColor="@color/color_333333"android:textSize="@dimen/sp_16"android:textStyle="bold" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:padding="@dimen/dp_6"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:text="@string/事故" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginStart="@dimen/dp_30"android:layout_marginEnd="@dimen/dp_30"android:layout_weight="1"android:background="@drawable/shape_color_remakes_label_style"android:gravity="center_horizontal"><RatingBarandroid:id="@+id/mRtbAccident"style="?android:attr/ratingBarStyleSmall"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:isIndicator="false"android:numStars="5"android:paddingTop="@dimen/dp_2"android:paddingBottom="@dimen/dp_2"android:stepSize="1"android:theme="@style/RatingBar" /></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:padding="@dimen/dp_6"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:text="@string/违章" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginStart="@dimen/dp_30"android:layout_marginEnd="@dimen/dp_30"android:layout_weight="1"android:background="@drawable/shape_color_remakes_label_style"android:gravity="center_horizontal"><RatingBarandroid:id="@+id/mRtbRegulations"style="?android:attr/ratingBarStyleSmall"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:isIndicator="false"android:numStars="5"android:paddingTop="@dimen/dp_2"android:paddingBottom="@dimen/dp_2"android:stepSize="1"android:theme="@style/RatingBar" /></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:padding="@dimen/dp_6"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:text="@string/违纪" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginStart="@dimen/dp_30"android:layout_marginEnd="@dimen/dp_30"android:layout_weight="1"android:background="@drawable/shape_color_remakes_label_style"android:gravity="center_horizontal"><RatingBarandroid:id="@+id/mRtbDiscipline"style="?android:attr/ratingBarStyleSmall"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:isIndicator="false"android:numStars="5"android:paddingTop="@dimen/dp_2"android:paddingBottom="@dimen/dp_2"android:stepSize="1"android:theme="@style/RatingBar" /></LinearLayout></LinearLayout><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="@dimen/dp_6"android:text="@string/评分备注" /><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="@dimen/dp_10"android:layout_marginRight="@dimen/dp_10"android:background="@drawable/shape_color_remakes_label_style"android:minHeight="@dimen/dp_60"android:padding="@dimen/dp_6"><EditTextandroid:id="@+id/mEtRemarks"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@null"android:gravity="top|left"android:hint="@string/这是评分备注"android:inputType="textMultiLine"android:maxLines="5"android:minLines="3"android:textSize="@dimen/sp_13" /></RelativeLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_marginTop="@dimen/dp_6"android:layout_weight="1"android:gravity="center"android:orientation="horizontal"android:padding="@dimen/dp_5"><TextViewandroid:id="@+id/mTvCancelDialog"android:layout_width="@dimen/x150"android:layout_height="@dimen/y64"android:layout_marginRight="@dimen/x30"android:background="@drawable/shape_247eff_30_stroke_style"android:gravity="center"android:text="取消"android:textColor="@color/color_247EFF"android:textSize="@dimen/sp_14"android:textStyle="bold" /><TextViewandroid:id="@+id/mTvConfirmDialog"android:layout_width="@dimen/x150"android:layout_height="@dimen/y64"android:layout_marginLeft="@dimen/x30"android:background="@drawable/shape_247eff_radius_30dp_style"android:gravity="center"android:text="确认"android:textColor="@color/color_FFFFFF"android:textSize="@dimen/sp_14"android:textStyle="bold" /></LinearLayout></LinearLayout>

drawable ---->  shape_while_radius_10dp_style.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="@color/color_FFFFFF" /><corners android:radius="@dimen/x20" />
</shape>

drawable -----> shape_color_remakes_label_style.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="@color/color_FAFAFA"/><corners android:radius="@dimen/dp_5"/><stroke android:color="@color/color_F3F3F3"android:width="@dimen/dp_1"/><corners android:radius="@dimen/dp_5"/></shape>

values ------> styles.xml

  RatingBar颜色:

    <!--RatingBar颜色--><style name="RatingBar" parent="Theme.AppCompat"><item name="colorControlNormal">@color/color_CCCCCC</item><item name="colorControlActivated">@color/color_FF7070</item></style>

 Dialog主题:

    <style name="CenterDialogTheme" parent="@android:style/Theme.Dialog"><!-- 边框 --><item name="android:windowFrame">@null</item><!-- 是否浮现在activity之上 --><item name="android:windowIsFloating">true</item><!-- 半透明 --><item name="android:windowIsTranslucent">true</item><!-- 无标题 --><item name="android:windowNoTitle">true</item><item name="android:background">@android:color/transparent</item><!-- 背景透明 --><item name="android:windowBackground">@android:color/transparent</item><!-- 模糊 --><item name="android:backgroundDimEnabled">true</item><!-- 遮罩层 --><item name="android:backgroundDimAmount">0.5</item></style>

drawable -----> shape_247eff_30_stroke_style.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><corners android:radius="@dimen/x50"/><stroke android:color="@color/color_247EFF" android:width="@dimen/x2"/></shape>

drawable -----> shape_247eff_radius_30dp_style.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><!-- rectangle表示为矩形 --><!-- 填充的颜色 --><solid android:color="@color/color_247EFF" /><!-- android:radius 圆角的半径 --><corners android:radius="30dp" /></shape>
CenterDialogView:
public class CenterDialogView {private static CenterDialogView mInstance;private Context mContext;private Dialog mDialog;private static final String TAG = "CenterDialogViewTag";private long exitTime = 0;private CenterDialogView(Context context) {this.mContext = context;createDialog(context);}private void createDialog(Context context) {//1、使用Dialog、设置stylemDialog = new Dialog(context, R.style.CenterDialogTheme);mDialog.setCancelable(true);//设置setCancelable为false之后,物理返回按键不能取消弹框。需要设置该监听,以达到按返回键取消弹框的目的mDialog.setOnKeyListener((dialog, keyCode, event) -> {if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {if ((System.currentTimeMillis() - exitTime) > 2000) {exitTime = System.currentTimeMillis();} else {mDialog.cancel();}return true;}return false;});}public static CenterDialogView getInstance(Context context) {if (mInstance == null) {synchronized (CenterDialogView.class) {if (mInstance == null) {mInstance = new CenterDialogView(context);}}}return mInstance;}public Dialog loadDialogView(View view, float widthPx, float heightPx) {//2、设置布局mDialog.setContentView(view);Window window = mDialog.getWindow();//设置对话框大小window.setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);WindowManager.LayoutParams layoutParams = mDialog.getWindow().getAttributes();layoutParams.width = (int) widthPx;layoutParams.height = (int) heightPx;if (heightPx == 0) {layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;}mDialog.getWindow().setAttributes(layoutParams);//设置弹出位置window.setGravity(Gravity.CENTER);return mDialog;}public void showDialog() {if (!mDialog.isShowing()) {mDialog.show();}}/*** 根据手机的分辨率从 dp 的单位 转成为 px(像素)** @param dpValue 尺寸dip* @return 像素值*/private int dp2px(float dpValue) {final float scale = mContext.getResources().getDisplayMetrics().density;return (int) (dpValue * scale + 0.5f);}public void cancelDialog() {if (mDialog != null) {mDialog.cancel();}}/*** 评论弹框** @return*/public View CommentDriverDialog(OnCommentDriverListener onCommentDriverListener) {View view = LayoutInflater.from(mContext).inflate(R.layout.comment_task_dialog, null, false);RatingBar mRtbAccident = view.findViewById(R.id.mRtbAccident);RatingBar mRtbRegulations = view.findViewById(R.id.mRtbRegulations);RatingBar mRtbDiscipline = view.findViewById(R.id.mRtbDiscipline);EditText mEtRemarks = view.findViewById(R.id.mEtRemarks);TextView mTvCancelDialog = view.findViewById(R.id.mTvCancelDialog);TextView mTvConfirmDialog = view.findViewById(R.id.mTvConfirmDialog);mRtbAccident.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {@Overridepublic void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {Log.i("onRatingChangedTAG", "rating: " + rating + ", fromUser:" + fromUser);}});view.findViewById(R.id.mTvCancelDialog).setOnClickListener(v -> {if (mDialog != null) mDialog.cancel();});view.findViewById(R.id.mTvConfirmDialog).setOnClickListener(v -> {if (onCommentDriverListener != null) onCommentDriverListener.onClick();});return view;}public interface OnCommentDriverListener {void onClick();}public void destroyView() {Log.d(TAG, "destroyView: ");if (mDialog != null) {mDialog.cancel();mDialog = null;}if (mInstance != null) {mInstance = null;}}}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/239637.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1688API接口系列,1688开放平台接口使用方案(商品详情数据+搜索商品列表+商家订单类)

1688商品详情接口是指1688平台提供的API接口&#xff0c;用于获取商品详情信息。通过该接口&#xff0c;您可以获取到商品的详细信息&#xff0c;包括商品标题、价格、库存、描述、图片等。 要使用1688商品详情接口&#xff0c;您需要先申请1688的API权限&#xff0c;并获取ac…

人工智能对我们的生活影响有多大?

一、标题解析 本文标题为“人工智能对我们的生活影响有多大&#xff1f;”&#xff0c;这是一个典型的知乎风格SEO文案标题&#xff0c;既能够吸引读者&#xff0c;又能够体现文章的核心内容。 二、内容创作 1. 引言&#xff1a;在开头&#xff0c;我们可以简要介绍人工智能…

WebSocket 实战:构建高效的实时应用

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

一、服务器准备

本案例使用VMware Workstation Pro虚拟机创建虚拟服务器来搭建Linux服务器集群&#xff0c;所用软件及版本如下&#xff1a; Centos7.7-64bit 1、三台虚拟机创建 第一种方式&#xff1a;通过iso镜像文件来进行安装(不推荐) 第二种方式&#xff1a;直接复制安装好的虚拟机文…

熬夜会秃头——Beta冲刺总结随笔

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标总结Beta冲刺团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 目录 一、Beta冲刺开始前设立的任务完成…

使用drawio图表,在团队中,做计划,设计和跟踪项目

使用drawio图表&#xff0c;在团队中&#xff0c;做计划&#xff0c;设计和跟踪项目 drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部…

DCCK“启航计划“3+2第三课相机参数于选型

面积小&#xff0c;通电发热都用以引入噪声

prometheus部署及与grafana结合应用

一、prometheus 介绍 prometheus server 是 Prometheus组件中的核心部分&#xff0c;负责实现对监控数据的获取&#xff0c;存储以及查询。它会定期从静态配置的监控目标或者基于服务发现自动配置的自标中进行拉取数据&#xff0c;当新拉取到的数据大于配置的内存缓存区时&…

TCP三次握手过程

什么是TCP tcp是一个面向连接的、可靠的、基于字节流的传输层通信协议 面向连接&#xff1a;TCP连接是一对一的&#xff0c;不能实现一对多或多对一&#xff0c;TCP在通信前要首先建立连接&#xff0c;连接成功后才能开始进行通信可靠的&#xff1a;TCP连接要保证通信过程的可靠…

火狐插件(附加组件)发布流程

1、进入开发者中心 开发者中心 :: Firefox 附加组件https://addons.mozilla.org/zh-CN/developers/ 路径&#xff1a; 2、首次使用会自动打开注册登录页 3、注册登录后点击 提交你的第一个附加组件 4、此时需要进行两步验证 5、点击身份验证应用 在打开的页面中根据个人实际…

【el-form】表单label添加?及tooltip

<el-form-item><span slot"label"><el-tooltip :content"tooltip提示框内容" placement"top"><i class"el-icon-question"></i></el-tooltip>{{ $t(menu.status) }}</span><el-radio-gr…

Inkscape 图片生成Gcode

1.到网上找一张简单的图片&#xff0c;拖入软件中 2.文档属性单位改成毫米 3.路径--->提取位图轮廓-->使用边缘检测 4.删除原图片 5.路径-->笔廓转化成路径 6.转变完了效果如下 7.文件另存为--> gcode 就大功告成啦