当应用程序在真正的Android设备上运行时,虚线实际上不是虚线

Posted

技术标签:

【中文标题】当应用程序在真正的Android设备上运行时,虚线实际上不是虚线【英文标题】:Dotted line is actually not dotted when app is running on real Android device 【发布时间】:2013-09-26 17:19:31 【问题描述】:

在我的应用程序中,我使用 XML 定义的垂直虚线。

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="90"
    android:toDegrees="90">
<shape

    android:shape="line">
    <stroke

        android:
        android:color="@color/light_gray"
        android:dashWidth="2dp"
        android:dashGap="4dp"
        />
</shape>

当我在 Android Studio 中挑剔我的布局时,该行被正确渲染为点状,但当我在真实设备上运行应用程序时出现问题。这条线很结实,没有缝隙。你知道问题出在哪里吗?我尝试了许多不同的设备,包括那些运行最新的 4.3 Android 的设备。它看起来到处都是一样的:/

【问题讨论】:

无需控制硬件加速This will solved issue of dotted line 【参考方案1】:

这很可能与硬件加速有关:GL 模式不支持虚线。

它记录在这里: https://code.google.com/p/android/issues/detail?id=29944

像这样在你的 AndroidManifest.xml 中关闭你的硬件加速:

android:hardwareAccelerated="false"

或:

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null) 

有关如何使用第一个解决方案的更多信息: http://developer.android.com/guide/topics/graphics/hardware-accel.html

【讨论】:

你是个巫师......或者你只是更擅长使用谷歌:) 谢谢 几个月前偶然发现了同样的问题;) 第二种解决方案确实适用于视图级别,但不清楚在第一个解决方案中应用标签的位置。 赞成。就我而言,它是android:layerType="software" 见***.com/questions/10843402/…。不要使用android:hardwareAccelerated="false",在视图中使用android:layerType="software"【参考方案2】:

控制硬件加速

您可以在以下级别控制硬件加速:

应用程序

活动

窗口

查看

应用级别

<application android:hardwareAccelerated="true" ...>

活动级别

<application android:hardwareAccelerated="true">
    <activity ... />
    <activity android:hardwareAccelerated="false" />
</application>

窗位

getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

查看级别

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

Reference

【讨论】:

【参考方案3】:

我找到了相同的解决方案,但在 View attributes (xml) 中:

        <View
        android:layout_
        android:layout_
        ...
        android:layerType="software"/>

我想这是上面所说的视图级别。属性的其他变体(“无”,当然还有“硬件”)对我不起作用。

【讨论】:

以上是关于当应用程序在真正的Android设备上运行时,虚线实际上不是虚线的主要内容,如果未能解决你的问题,请参考以下文章

无法在真正的 android 设备上获取当前位置

在 mac 上使用真正的 android 设备运行自动化测试时,是不是可以将上下文切换到 WebView?

在真正的 Android 设备上调试 Spring RestTemplate 真的很慢

如何在真正的平板设备上运行我的安卓应用程序?

Android模拟器没有显示画布绘图

Flutter_Messaging 不在真正的 Android 手机上播放声音