Android · 2016年7月19日 0

Android share绘制虚线在手机上显示实线问题

可以说这是一个Bug, 据说在4.0以上机器会出现,我测试是android 4.4.2

Xml代码  收藏代码
  1. <?xml version=“1.0” encoding=“utf-8”?>
  2. <shape xmlns:android=“http://schemas.android.com/apk/res/android”
  3.     android:shape=“line” >
  4.     <stroke
  5.         android:dashGap=“3dp”
  6.         android:dashWidth=“8dp”
  7.         android:width=“1dp”
  8.         android:color=“#999999” />
  9.     <size android:height=“1dp” />
  10. </shape>

layout中引用:

Xml代码  收藏代码
  1. <View
  2.         android:layout_width=“match_parent”
  3.         android:layout_height=“3dp”
  4.         android:layout_marginBottom=“5dp”
  5.         android:layout_marginTop=“5dp”
  6.         android:background=“@drawable/left_menu_dash_line” />

在4.4.2上显示实线。

 

解决:

Xml代码  收藏代码
  1. <View
  2.         android:layerType=“software”
  3.         android:layout_width=“match_parent”
  4.         android:layout_height=“3dp”
  5.         android:layout_marginBottom=“5dp”
  6.         android:layout_marginTop=“5dp”
  7.         android:background=“@drawable/left_menu_dash_line” />

重点:

Xml代码  收藏代码
  1. android:layerType=“software”

 

 

也可以:

Java代码  收藏代码
  1. <activity android:name=“.TestActivity” android:label=“Test”
  2.             android:hardwareAccelerated=“false”>

重点关闭硬件加速:

Java代码  收藏代码
  1. android:hardwareAccelerated=“false”
divider_under_pic.setLayerType(View.LAYER_TYPE_SOFTWARE,null);

代码中使用setLayerType设置。

 

参考:

http://developer.android.com/guide/topics/graphics/hardware-accel.html

Share this: