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.mzph.cn/news/198550.shtml

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

相关文章

STM32-新建工程(标准库)

目录 STM32F10x新建工程&#xff08;标准库&#xff09; 移植文件夹 新建工程 添加启动文件和必需文件 在工程中加载新添加的文件 在工程中添加文件路径 在工程中添加main函数 添加lib库 添加必需文件 添加宏定义 STM32F10x新建工程&#xff08;标准库&#xff09; …

【Python】创建简单的Python微服务Demo与FastAPI

创建简单的Python微服务Demo与FastAPI 在微服务架构中&#xff0c;通过FastAPI框架创建一个简单的Python微服务Demo涉及多个步骤&#xff0c;包括定义服务、使用框架、进行通信等。在这篇文章中&#xff0c;我们将使用FastAPI框架创建两个简单的微服务&#xff0c;它们通过RES…

HBase安装配置:一键自动安装配置

使用shell脚本一键下载、安装、配置HBase&#xff08;单机版&#xff09; 1. 把下面的脚本复制保存为/tmp/install_hbase.sh文件 #!/bin/bash# 安装之前确保安装目录有写入权限&#xff0c;若没有&#xff0c;自行增加 # 安装版本 zk_version"2.4.8" # 安装目录 zk…

【WxPusher】消息推送小案例

提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 WxPusher后台 WxPusher文档 一、注册WxPusher 进入后台获取你的token 二、使用步骤 1.编写脚本 参数如下&#xff08;示例&#xff09;&#xff1a; {"appToken": "AT_AnXubGNGCe7OVN…

基于springboot的校园二手市场

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

LeetCode:2477. 到达首都的最少油耗(DFS C++、Java)

目录 2477. 到达首都的最少油耗 题目描述&#xff1a; 实现代码与解析&#xff1a; dfs 2477. 到达首都的最少油耗 题目描述&#xff1a; 给你一棵 n 个节点的树&#xff08;一个无向、连通、无环图&#xff09;&#xff0c;每个节点表示一个城市&#xff0c;编号从 0 到 n…

医院预约挂号平台的设计与实现

摘 要 网络的空前发展给人们的工作和生活带来了极大的便利&#xff0c;信息技术已成为节约运营成本、提高工作效率的首选。相比之下&#xff0c;国内相当多的中小医院在医院预约工作中的手工工作比较保守&#xff0c;数据查询和存储成本都很高&#xff0c;但效率很低。为了使医…

JAVAEE初阶 多线程基础(六)

wait,notify,饿汉模式 一.wait,notify方法使用1.1 例子 二.wait和sleep区别三.单例模式中的饿汉模式 一.wait,notify方法使用 引入wait和notify为了能够从应用层面上,干预到多个不同线程代码的执行顺序,不是影响系统的线程调度策略. 相当于是在应用程序代码中,让后执行的线程,主…

支付宝沙箱支付

1. 二维码 1.1 什么是二维码&#xff1a; ​ 二维码又称QR Code&#xff0c;QR全称Quick Response&#xff0c;是一个近几年来移动设备上超流行的一种编码方式&#xff0c;它比传统的Bar Code条形码能存更多的信息&#xff0c;也能表示更多的数据类型。 ​ 二维条码/二维码&…

HNU-电路与电子学-2017期末B卷(不含解析)

【写在前面】 电路与电子学好像是从2020级开设的课程&#xff0c;故实际上目前只有2020与2021两个年级考过期末考试。 这门课程主要由所谓的“数电”与“模电”组成。而且先学的“模电”后学的“”数电&#xff0c;故期中考试主要以“模电”为主&#xff0c;期末考试主要以“…

04数据平台Flume

Flume 功能 Flume主要作用&#xff0c;就是实时读取服务器本地磁盘数据&#xff0c;将数据写入到 HDFS。 Flume是 Cloudera提供的高可用&#xff0c;高可靠性&#xff0c;分布式的海量日志采集、聚合和传输的系统工具。 Flume 架构 Flume组成架构如下图所示&#xff1a; A…

编译原理:NFA转DFA(原理+完整代码+可视化实现)

NFA转换为DFA 【本文内容摘要】 什么是DFA通过子集构造法将NFA转换为DFA生成DFA的dot文件并且形成可视化。 如果本文对各位看官有用的话&#xff0c;请记得给一个免费的赞哦&#xff08;收藏也不错&#xff09;&#xff01; 文章目录 NFA转换为DFA一、什么是DFA二、NFA转换为…

【GO】protobuf在golang中的测试用例

上篇文章介绍了如何安装protobuf环境&#xff0c;文章链接如下 【Go】protobuf介绍及安装-CSDN博客 本节介绍protobuf在gRPC中具体如何使用&#xff0c;并编写测试用例 一、Protobuf是如何工作的 .proto文件是protobuf一个重要的文件&#xff0c;它定义了需要序列化数据的结…

企业微信配置可信域名

首先去申请一个域名&#xff0c;然后将域名绑定到有公网ip的云服务器上&#xff0c;绑定到具体的网站&#xff1b;然后再企业微信&#xff0c;管理后台&#xff0c;点击具体的应用&#xff0c;进【网页授权及JS-SDK】&#xff1b;点击底部的【申请校验域名】点击下载文件&#…

postgresql pg_hba.conf 配置详解

配置文件之pg_hba.conf介绍 该文件用于控制访问安全性&#xff0c;管理客户端对于PostgreSQL服务器的访问权限&#xff0c;内容包括&#xff1a;允许哪些用户连接到哪个数据库&#xff0c;允许哪些IP或者哪个网段的IP连接到本服务器&#xff0c;以及指定连接时使用的身份验证模…

第73讲:深入理解MySQL数据库InnoDB存储引擎:内存结构、磁盘结构与后台线程全面解析

文章目录 1.InnoDB存储引擎的架构2.InnoDB存储引擎的内存结构2.1.Buffer Pool缓冲池2.2.Change Buffer更改缓冲区2.3.自适应Hash索引2.4.Log Buffer日志缓冲区 3.InnoDB存储引擎的磁盘结构3.1.System Tablespace系统表空间3.2.File-Per-Table Tablespaces每个表都有单独的表空间…

红警For Mac(RAM芯片可玩)

1、文件损坏解决版本&#xff01; 执行以下命令&#xff0c;&#xff08;注意&#xff1a;命令2应用路径根据实际情况修改&#xff09; sudo spctl --master-disable sudo xattr -r -d com.apple.quarantine /Applications/红警2尤里复仇M芯片.app2、新系统14&#xff0c;第一…

孩子都能学会的FPGA:第二十一课——用线性反馈移位寄存器实现伪随机序列

&#xff08;原创声明&#xff1a;该文是作者的原创&#xff0c;面向对象是FPGA入门者&#xff0c;后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门&#xff0c;作者不光让大家知其然&#xff0c;还要让大家知其所以然&#xff01;每个工程作者都搭建了全自动化的仿…

腾讯云轻量应用服务器怎么使用宝塔面板?

腾讯云轻量应用服务器宝塔面板怎么用&#xff1f;轻量应用服务器如何安装宝塔面板&#xff1f;在镜像中选择宝塔Linux面板腾讯云专享版&#xff0c;在轻量服务器防火墙中开启8888端口号&#xff0c;然后远程连接到轻量服务器执行宝塔面板账号密码查询命令&#xff0c;最后登录和…

采集伪原创洗稿,实现文章创作的方法

各位写手小伙伴们&#xff0c;今天要和大家分享一些关于伪原创的方法和经验&#xff0c;希望这些建议能够在你们的写作之旅中派上用场。 首先我们需要明确一下&#xff0c;伪原创并不是鼓励抄袭&#xff0c;而是一种在保留原文核心思想的同时&#xff0c;通过巧妙的方式改写&a…