【问题标题】:Android: Ratingbar not visible, becomes visible only on touchingAndroid:评分栏不可见,仅在触摸时可见
【发布时间】:2015-11-07 14:49:33
【问题描述】:

在我的 Android 应用中,评分栏不可见。它只有在触摸时才可见,并且在我松开手指时就会消失。

我的代码:

<RatingBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/myratingStars"
            android:layout_gravity="center_horizontal|center_vertical|center"
            android:numStars="5"/>

它不会在 Lollipop 模拟器/真手机/Android Studio 设计窗口(API 23 模式)中呈现,而是在 KitKat 模拟器和 Android 设计窗口(API 15 模式)中呈现。

完整的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="24dp"
        android:orientation="vertical">
        <RatingBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/myratingStars"
            android:layout_gravity="center_horizontal|center_vertical|center"
            android:numStars="5"/>
        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <android.support.v7.widget.AppCompatEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="16sp"
                android:maxLines="10"
                android:id="@+id/myratingTxt"
                android:layout_marginTop="12dp"
                android:layout_marginBottom="2dp"
                android:hint="@string/write_review"/>
        </android.support.design.widget.TextInputLayout>

        <android.support.v7.widget.AppCompatButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/submitReview"
            android:text="@string/review_submit"
          android:layout_gravity="center_horizontal|center|center_vertical"
            android:textColor="@color/white"
            android:onClick="submitReview"
            android:layout_marginTop="8dp"
            tools:visibility="visible"/>
    </LinearLayout>

</LinearLayout>

【问题讨论】:

  • 也许某些视图覆盖了它。
  • 或颜色与背景相同
  • 你知道为什么会这样吗?我有同样的问题。
  • 不!令人沮丧:(
  • 你试过给一个固定的高度和宽度...?

标签: android android-5.0-lollipop android-4.4-kitkat ratingbar


【解决方案1】:

经过一番研究,我试了试运气,它奏效了!!!终于找到解决办法了!

添加这些属性来救我的命!!!

android:progressBackgroundTint="@color/colorAccent"
android:progressTint="@color/colorAccent"
android:secondaryProgressTint="@color/colorAccent"

例子:

<android.support.v7.widget.AppCompatRatingBar
        android:id="@+id/ratingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:progressBackgroundTint="@color/colorAccent"
        android:progressTint="@color/colorAccent"
        android:secondaryProgressTint="@color/colorAccent"
        android:rating="4" />

您可以根据需要更改这些颜色!!

额外信息:

android:progressTint 用于实际进度颜色

android:secofticprogresstint em>用于次要进度,即选择的部分评级比如使用此属性彩色的另一半彩色。

android:progressBackgroundTint 用于其余的评分,比如 5 分中的 3 分,所以最后 2 个给这个上色!

编码愉快!!吃喝安卓! ;)

【讨论】:

    【解决方案2】:

    根据谷歌代码上的this 问题,尝试将该行添加到您的RatingBar 属性中:

    android:isIndicator="true"
    style="?android:attr/ratingBarStyleIndicator"
    

    或者可能是其中的一些样式:

    style="?android:attr/ratingBarStyle"
    

    style="android:attr/ratingBarStyleSmall"
    

    正如您所看到的,谷歌开发人员没有给出答案,所以我不知道为什么会出现这种奇怪的行为,但也许它有帮助。

    【讨论】:

      【解决方案3】:

      没有所有的布局文件是不可能解决这个问题的,但是如果只发生在棒棒糖或棉花糖中可能是海拔问题。尝试设置为评分栏“elevation:10dp”

      【讨论】:

        【解决方案4】:
        yourRatingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
                    @Override
                    public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
                        YourRatingValue = String.valueOf(rating);                 
                        Toast.makeText(getActivity(), "Your Rating :" + YourRatingValue, Toast.LENGTH_SHORT).show();
                    }
                });
        

        【讨论】:

        • 尝试设置OnRatingBarChangeListener
        【解决方案5】:

        对我有用的是玩弄小部件的高度。当它太大时,小部件无法在视觉上显示。

        【讨论】:

          猜你喜欢
          • 2012-07-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多