Próbuję wymyślić, jak zdefiniować pionową linię (o grubości 1 dp), która ma być używana jako rysowana.
Aby zrobić poziomą, jest całkiem prosta:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line">
<stroke android:width="1dp" android:color="#0000FF"/>
<size android:height="50dp" />
</shape>
Pytanie brzmi, jak ustawić tę linię pionowo?
Tak, istnieją obejścia, takie jak rysowanie kształtu prostokąta o grubości 1 piksela, ale to komplikuje rysowany plik XML, jeśli składa się z wielu <item>
elementów.
Czy ktoś miał z tym jakąś szansę?
AKTUALIZACJA
Sprawa jest nadal nierozwiązana. Jednak dla każdego, kto bierze udział w krucjacie dokumentacji Androida - może się to przydać: Brak instrukcji XML dla Androida
AKTUALIZACJA
Nie znalazłem innej drogi niż ta, którą oznaczyłem jako poprawną. To załatwia sprawę, choć wydaje się nieco „ciężkie”, więc jeśli znasz odpowiedź, nie zapomnij jej udostępnić;)
Możesz zagnieździć swój kształt wewnątrz tagu obracanego.
Jednak jedynym problemem jest to, że parametrami układu zdefiniowanymi w pliku XML układu będą wymiary używane do narysowania oryginalnego kształtu. Oznacza to, że jeśli chcesz, aby Twoja linia miała wysokość 30 dp, musisz zdefiniować layout_width o wartości 30 dp w pliku XML układu. Ale ostateczna szerokość w tym przypadku również będzie wynosić 30 dp, co jest prawdopodobnie niepożądane w większości sytuacji. Zasadniczo oznacza to, że zarówno szerokość, jak i wysokość muszą mieć tę samą wartość, wartość żądanej długości linii. Nie mogłem wymyślić, jak to naprawić.
Wydaje się, że jest to rozwiązanie „na Androida”, ale jeśli nie ma jakiegoś rozwiązania lub obejścia problemu z wymiarami, o którym wspominam, to prawdopodobnie nie zadziała dla większości ludzi. To, czego naprawdę potrzebujemy, to atrybut orientacji w <shape /> lub <stroke />.
Możesz również spróbować odwołać się do innego elementu rysowalnego w atrybutach tagu obracania, takich jak:
Jednak nie testowałem tego i oczekuję, że będzie miał te same problemy.
-- EDYTOWAĆ --
Och, właściwie wymyśliłem rozwiązanie. Możesz użyć ujemnego marginesu w pliku XML układu, aby pozbyć się niepożądanego dodatkowego miejsca. Jak na przykład:
źródło
Możesz użyć atrybutu obracania
źródło
Pracuje dla mnie . Umieść go jako tło widoku z fill_parent lub o stałym rozmiarze w wysokości dp
źródło
Wymyśliłem inne rozwiązanie. Pomysł polega na tym, aby najpierw wypełnić element do rysowania kolorem, który chcesz, aby linia była, a następnie ponownie wypełnić cały obszar kolorem tła, używając wypełnienia po lewej lub prawej stronie. Oczywiście działa to tylko w przypadku pionowej linii po lewej lub prawej stronie twojego rysunku.
źródło
showDividers="middle"
). Aby uzyskać dzielnik 2dp, musiałem określićandroid:left="3dp"
tutaj.@android:color/transparent
zamiast twardego kodowania@color/background_color
.wrap_content
.Myślę, że to najprostsze rozwiązanie:
źródło
android:height
do,size
jeśli chcesz kontrolować również ten wymiar.Musiałem dodawać widoki dynamicznie / programowo, więc dodanie dodatkowego widoku byłoby uciążliwe. Wysokość mojego widoku wynosiła WRAP_CONTENT, więc nie mogłem użyć rozwiązania prostokąta. Znalazłem tutaj wpis na blogu o rozszerzaniu TextView, nadpisywaniu onDraw () i malowaniu w linii, więc zaimplementowałem to i działa dobrze. Zobacz mój kod poniżej:
Potrzebowałem pionowej linii po lewej stronie, ale parametry linii rysowania są
drawLine(startX, startY, stopX, stopY, paint)
takie, aby można było narysować dowolną linię prostą w dowolnym kierunku w widoku. Wtedy w mojej działalności mamNoteTextView note = new NoteTextView(this);
nadzieję, że to pomaga.źródło
to bardzo proste ... aby dodać pionową linię w android xml ...
źródło
Zależy od tego, gdzie chcesz mieć pionową linię, ale jeśli chcesz na przykład obramowanie pionowe, możesz ustawić widok nadrzędny z niestandardowym rysunkiem w tle. Następnie możesz zdefiniować rysowalny w następujący sposób:
Ten przykład utworzy cienką czarną linię 1 dp po prawej stronie widoku, która będzie miała to rysowalne jako tło.
źródło
źródło
Wygląda na to, że nikt nie wspomniał o tej opcji:
źródło
Możesz użyć kształtu, ale zamiast linii nadaj mu prostokąt.
i w swoim układzie użyj tego ...
Być może będziesz musiał pobawić się szerokością, w zależności od rozmiaru kresek, aby umieścić ją w jednej linii.
Mam nadzieję, że to pomoże
źródło
źródło
Aby utworzyć pionową linię, użyj prostokąta o szerokości 1 dp:
Nie używaj
stroke
, użyjsolid
(który jest kolorem „wypełnienia”), aby określić kolor linii.źródło
źródło