2012-06-01 12 views
22

Poniżej znajduje się linia przerywana, zdefiniowana jako ShapeDrawable w XML:Android linia przerywana rozciągliwej potencjalnego ICS błąd

<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="line"> 

    <size 
     android:height="2dp" 
     android:width="700dp" /> 

    <stroke 
     android:width="1dp" 
     android:color="@android:color/black" 
     android:dashWidth="1dp" 
     android:dashGap="2dp" /> 

</shape> 

Będzie to narysować piękny przerywana linia kilkoma telefonami Gingerbread. Jednak w Galaxy Nexus myślniki są ignorowane, a kształt jest narysowany jako linia ciągła. Co jeszcze ciekawsze, emulator z uruchomionym ICS renderuje go poprawnie za pomocą kresek, a to tylko fizyczne urządzenie, które go skręca.

Czy brakuje mi czegoś oczywistego? Czy to naprawdę błąd w systemie Android 4.0? Linia jest używana w kilku miejscach. Oto przykład ImageView:

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="@dimen/observation_observe_side_margin" 
    android:layout_marginRight="@dimen/observation_observe_side_margin" 
    android:layout_marginTop="16dp" 
    android:contentDescription="@string/dotted_line_description" 
    android:src="@drawable/dotted_line" /> 
+0

Zauważyłem ten sam problem w mojej aplikacji na Galaxy Nexus. Na innych moich urządzeniach 2.x wyświetla się w postaci kropkowanej. –

+0

duplikat http://stackoverflow.com/a/26296229/185022 –

+0

możliwy duplikat [linii kropkowanej w rzeczywistości nie jest przerywana, gdy aplikacja działa na prawdziwym urządzeniu z systemem Android] (http://stackoverflow.com/questions/18931679/document -line-to-faktycznie-nie-przerywane-kiedy-app-działa-na-prawdziwym-android-device) –

Odpowiedz

43

Kwestia zalogowany na http://code.google.com/p/android/issues/detail?id=29944 ma komentarz stosowania następujących do widoku:

view.setLayerType(View.LAYER_TYPE_SOFTWARE, null) 

Ten pracował dla mnie.

+27

Uwaga: jeśli nie chcesz edytować widoku programowo, możesz dodać atrybut "android: layerType =" software "' do definicji XML. – Arkaaito

+0

API 11+ http://developer.android.com/reference/android/view/View.html#setLayerType – Dori

+0

tak w przykładzie w pytaniu. czy ustawisz 'android: layerType =" software "' na 'ImageView' lub' shape'? –

Powiązane problemy