私のアプリでは、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:width="1dp"
Android:color="@color/light_gray"
Android:dashWidth="2dp"
Android:dashGap="4dp"
/>
</shape>
Android Studioでレイアウトを選択していると、線は適切に点線でレンダリングされますが、実際のデバイスでアプリを実行すると問題が発生します。線は実線で表示されます。ギャップ..どこで問題が発生する可能性があるか知っていますか?最新の4.3 Androidを実行しているデバイスを含むさまざまなデバイスを試しました..どこでも同じように見えます:/
これは、ハードウェアアクセラレーションに関連している可能性があります。破線は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
ハードウェアアクセラレーションの制御
ハードウェアアクセラレーションは、次のレベルで制御できます。
応用
アクティビティ
窓
見る
アプリケーションレベル
<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);
同じ解決策を見つけましたが、属性の表示(xml)にあります:
<View
Android:layout_width="wrap_content"
Android:layout_height="4dp"
...
Android:layerType="software"/>
上で述べたように、それはビューレベルだと思います。属性の他のバリアント(「なし」およびもちろん「ハードウェア」)は私には機能しませんでした。