安卓手机上三星设备缺失TextView文本

6

我在Play商店有一个应用程序。我的一些用户报告说他们无法看到标签。问题似乎只发生在安卓版本为4.1及更早的三星设备上。我在模拟器上无法重复这个问题。有人之前遇到过类似的情况吗?

enter image description here

TextViews显示为黑色框,这些是普通的TextView。

<TextView
    android:id="@+id/text_box"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:background="@drawable/phone_list_row_border"
    android:gravity="center_vertical"
    android:maxLines="1"
    android:text="\tBla bla bla"
    android:textColor="@color/black"
    android:textSize="@dimen/list_row_text_size"/>

<TextView
    android:id="@+id/text_eksi"
    style="@style/animating_button_labels"
    android:layout_gravity="center"
    android:layout_marginTop="-10dp"
    android:gravity="center"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:text="@string/eksi_sozluk"
    android:textAppearance="?android:attr/textAppearanceLarge"/>

我找到了this个问题,但似乎那只是巧合地解决了问题。我卡住了,因为我无法在我的任何设备上重复这个问题。我需要一些提示来重现错误或找到原因。
谢谢。

Edit: phone_list_row_border.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle"
       android:thickness="1dp">

    <stroke
        android:width="2dp"
        android:color="#44aa77"/>

    <corners android:radius="10dp"/>

    <padding
        android:bottom="5dp"
        android:left="10dp"
        android:right="10dp"
        android:top="5dp"/>
</shape>

另一个样式中有一个可绘制对象。它的xml在这里:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="-2dp"
        android:left="-2dp"
        android:right="-2dp"
        android:top="1dp">
        <shape android:shape="rectangle">
            <stroke
                android:width="1dp"
                android:color="@color/black"/>
        </shape>
    </item>
</layer-list>

为什么这个问题被踩了? - daemmie
2
@oberflansch 也许他们是三星的粉丝,无法接受这样一个事实:即使是价值100美元的假冒中国手机,使用相同的Android版本,标签也能正确显示,但三星手机却不能。 - b4da
像你这样的问题在你能够在真实设备上测试之前很难重现。我曾经遇到过类似的问题,其中一些索尼手机上的弹出窗口背景变成了白色(而不是黑色)。无论如何,你是否尝试过删除 android:textAppearance="?android:attr/textAppearanceLarge" 并自己应用属性? - Saket
2个回答

5

这个问题似乎只发生在安卓版本为4.1及更早的三星设备上。

是的,这是一些三星、LG和HTC设备中已知的问题。我有一个用户基础不错的应用程序,我自己也遇到了这个问题。

我被卡住了,因为我无法在任何设备上重复这个问题。

由于您没有提到您测试过哪些设备并且不能重现该问题,我必须假设它们不是那些出现问题的特定设备。

这是一个非常小的 样式 问题,其中已知会出现一些特定制造商的某些特定Android版本的 某些特定设备 上。

我自己在一些来自三星、LG和HTC等制造商的运行4.1、4.2或4.3版本的安卓设备上遇到过这个问题。到目前为止,在棒棒糖或奇巧上从未看到过这种情况。

解决方案

说了这么多,现在让我们来看看解决方案。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle"
       android:thickness="1dp">

    <stroke
        android:width="2dp"
        android:color="#44aa77"/>

    <corners android:radius="10dp"/>

    <padding
        android:bottom="5dp"
        android:left="10dp"
        android:right="10dp"
        android:top="5dp"/>
</shape>

这是你的形状xml文件,对吗?除了没有提供形状的背景之外,一切都正确。如果您不提供任何背景,它将默认为黑色。
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
           android:shape="rectangle"
           android:thickness="1dp">

        <stroke
            android:width="2dp"
            android:color="#44aa77"/>

        <corners android:radius="10dp"/>

        <padding
            android:bottom="5dp"
            android:left="10dp"
            android:right="10dp"
            android:top="5dp"/>

    <solid android:color="#ffffff" />
    </shape>

在这些特定的设备上,为形状添加一个单色应该可以解决问题。

测试

我有这样一台设备,它已知会出现这种奇怪的问题,我在上面测试过了,看起来完全正常。在较高版本的Android上,您不应该遇到这个问题,而且大多数情况下也不会在原生Android上发生。

希望对您有所帮助。


我也给你的问题点了赞。这是一个好问题,应该得到点赞。 - Aritra Roy
这解决了你的问题吗?还需要我以其他方式帮忙吗? - Aritra Roy
我更新了代码并将其发送给了几个用户。由于我无法尝试,所以我在等待他们的回复。如果他们说可以,我将授予您的赏金。 - b4da
好的,如果我能以其他方式帮助您,请告诉我。 - Aritra Roy

4

一些 Android 版本存在问题,无法正确解释 @android:color/transparent,这可能会在某些情况下被设置为默认颜色。

通过手动设置颜色来尝试解决此问题。

例如,将此行添加到您的形状中以更改实心颜色。

<solid android:color="#00ffffff" />

实际上,在这种情况下,最好将颜色指定为#00ffffff,因为在某些设备(如魅族)上,#00000000也可能变成黑色。 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接