Próbuję zrobić kropkowaną linię. Używam tego teraz dla linii ciągłej:
LinearLayout divider = new LinearLayout( this );
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, 2 );
divider.setLayoutParams( params );
divider.setBackgroundColor( getResources().getColor( R.color.grey ) );
Potrzebuję czegoś takiego, ale kropkowanego zamiast litego. Chciałbym uniknąć setek układów na przemian między układem przezroczystym a układem jednolitym.
canvas.drawLine()
. Zamiast tego można wyłączyć przyspieszenie sprzętowecanvas.drawPath
.dp
zamiastpx
.android:layerType="software"
należy ustawić w ImageView.efekt ścieżki jest ustawiony na obiekcie malowanym
możesz tworzyć wszelkiego rodzaju kropkowane wzory, podając więcej liczb w tablicy int [], która określa stosunki myślnika i odstępu. To prosta, równie przerywana linia.
źródło
Tworzenie linii kropkowanej za pomocą XML.
Utwórz xml w folderze do rysowania i podaj to tło elementowi, dla którego chcesz ustawić kropkowaną ramkę.
Tworzenie tła XML „dashed_border”:
Dodanie tego tła do elementu:
źródło
<corners android:radius="5dp" />
do swojego kształtu. Aby uzyskać więcej informacji, zobacz stackoverflow.com/a/41940609/1000551Utwórz xml (view_line_dotted.xml):
Ustaw jako tło widoku:
źródło
<item android:bottom="-1dp" android:left="-1dp" android:right="-1dp" >
, jeśli chcesz poziomą grubość linii 1dp.android:layerType="software"
do widoku lub zapisuview.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
(patrz stackoverflow.com/questions/10843402/... ).To, co zrobiłem, gdy chciałem narysować linię kropkowaną, to zdefiniowanie dash_line.xml :
A następnie w układzie wystarczy zdefiniować widok z tłem jako kreskę . Uwaga, aby dołączyć Androida: layerType = "software" , w przeciwnym razie nie będzie działać.
źródło
android:layerType="software"
właśnie szukałem! Twoje zdrowie!Mam niestandardową linię, która obsługuje poziomą i pionową linię. kod poniżej:
źródło
Korzystając z tej klasy, możesz zastosować efekt „przerywany i podkreślony” do tekstu wielowierszowego. aby użyć DashPathEffect, musisz wyłączyć hardwareAccelerated z TextView (chociaż metoda DashPathEffect ma problem z długim tekstem). mój przykładowy projekt możesz znaleźć tutaj: https://github.com/jintoga/Dashed-Underlined-TextView/blob/master/Untitled.png .
Wynik:
źródło
Jeśli szukasz linii pionowej, skorzystaj z tej rysowalnej.
Ujemne górne dolne i lewe wartości usuwają niepożądane boki kształtu, pozostawiając pojedynczą linię przerywaną.
Użyj go w takim widoku.
źródło
Użyłem poniżej jako tła dla układu:
źródło
android:shape="rectangle"
zamiast linii?Utworzyłem przerywaną przerywaną linię dla EditText. Proszę bardzo. Utwórz nowy xml. np. dashed_border.xml Kod tutaj:
I użyj na przykład nowego pliku xml w EditText:
Twoje zdrowie! :)
źródło
Użyj ShapeDrawable zamiast LinearLayout i graj z dashWidth i dashGap
http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
źródło
Najlepsze rozwiązanie dla kropkowanego tła działa idealnie
źródło
Aby uzyskać efekt Kropki na kanwie, ustaw ten atrybut na obiekcie malowania:
I zmień wartość 30 według własnego uznania: reprezentuje „odległość” między każdą kropką.
źródło
Jedyną rzeczą, która działała dla mnie i myślę, że jest to najprostszy sposób, to użycie Ścieżki z obiektem malowanym w ten sposób:
Następnie onDraw (): (ważne zresetowanie połączenia, jeśli zmienisz te punkty między połączeniami ondraw, spowoduje, że ścieżka zapisze wszystkie ruchy)
źródło
Podobało mi się rozwiązanie Ruidge , ale potrzebowałem większej kontroli z XML. Więc zmieniłem to na Kotlin i dodałem atrybuty.
1) Skopiuj klasę Kotlin:
2) Utwórz plik attr w katalogu / res i dodaj go
3) Dodaj styl do pliku stylów
4) Teraz możesz użyć domyślnego stylu
lub ustaw atrybuty w XML
źródło
Żadna z tych odpowiedzi nie działała dla mnie. Większość tych odpowiedzi daje półprzezroczystą ramkę. Aby tego uniknąć, musisz ponownie owinąć swój pojemnik innym pojemnikiem o preferowanym kolorze. Oto przykład:
Tak to wygląda
dashed_border_layout.xml
dashed_border_in.xml
dashed_border_out.xml
źródło
Nie wiem dlaczego, ale głosowane odpowiedzi nie działają dla mnie. Piszę to w ten sposób i działa dobrze.
Zdefiniuj widok niestandardowy:
Następnie możesz użyć go w swoim xml:
źródło
Utworzyłem bibliotekę z niestandardowym widokiem, aby rozwiązać ten problem i powinna być bardzo prosta w użyciu. Więcej informacji na stronie https://github.com/Comcast/DahDit . Możesz dodać linie przerywane w ten sposób:
źródło
Podobnie do tier777 tutaj jest rozwiązanie dla linii poziomej:
Wskazówką jest
<item android:top="-1dp">
.Aby wyświetlić linię przerywaną na starych urządzeniach (<= API 21), należy utworzyć widok z
android:layerType="software"
(patrz potencjalny błąd ICS z przerywaną linią przerywaną ):Możesz także dodać ten sam widok bez,
android:layerType="software"
abylayout-v23
uzyskać lepszą wydajność, ale nie jestem pewien, czy zadziała na wszystkich urządzeniach z API 23.źródło