Mam plik zawierający gradient (textgradient.xml
) w moim folderze rysowania. Muszę umieścić ten gradient jako kolor tekstu TextView
przez Javę. Jak to zrobić?Jak ustawić gradient jako kolor tekstu w TextView?
Odpowiedz
Wystarczy utworzyć zasób do rysowania (patrz przykład poniżej) i dodać go do układu utworzonego dla elementu ListItem.
odkształcalne (w twoich res \ odkształcalne folder - nazwać cokolwiek - listgrad.xml ex) mógłby wyglądać następująco:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="@color/gradient_start"
android:endColor="@color/gradient_end"
android:angle="-270" />
</shape>
należy dodać go do układu dla elementu listy (układ .xml plik można zdefiniować do tego) jak ten fragment kodu:
<TextView
android:id="@+id/ranking_order"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/list_grad"
/>
...
Tylko tekst musi mieć gradient, a nie cały widok tekstowy ... –
Dlaczego dwie odpowiedzi tutaj? –
nie wydaje się możliwe, aby rozszerzyć TextView wyciągnąć tekst z gradientem. Efekt ten można jednak osiągnąć, tworząc płótno i rysując na nim. Najpierw musimy zadeklarować nasz niestandardowy element interfejsu użytkownika. W inicjacji musimy stworzyć podklasę Układu. W tym przypadku użyjemy BoringLayout, który obsługuje tylko tekst z pojedynczą linią.
Shader textShader=new LinearGradient(0, 0, 0, 20,
new int[]{bottom,top},
new float[]{0, 1}, TileMode.CLAMP);//Assumes bottom and top are colors defined above
textPaint.setTextSize(textSize);
textPaint.setShader(textShader);
BoringLayout.Metrics boringMetrics=BoringLayout.isBoring(text, textPaint);
boringLayout=new BoringLayout(text, textPaint, 0, Layout.Alignment.ALIGN_CENTER,
0.0f, 0.0f, boringMetrics, false);
Następnie zastąpić onMeasure i OnDraw:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
setMeasuredDimension((int) textPaint.measureText(text), (int) textPaint.getFontSpacing());
}
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
boringLayout.draw(canvas);
}
Nasza realizacja OnDraw jest w tym momencie dość leniwy (nie jest to całkowicie ignoruje specyfikacje pomiarowych !, ale tak długo, jak zagwarantować, że widok jest biorąc pod uwagę wystarczającą ilość miejsca, powinien on działać poprawnie:
Alternatywnie możliwe byłoby dziedziczenie z Canvas i nadpisanie metody onPaint .Jeśli to zostanie zrobione, to niestety kotwica dla narysowanego tekstu zawsze będzie na dole, więc musimy do reklam d -textPaint.getFontMetricsInt(). ascent() do naszej współrzędnej y.
Ale jak to zrobić z gradientem pliku XML? –
Ta linki rozwiązuje zapytanie:
Stosowany LinearGradient klasę do tworzenia shaderów, który jest ustawiony na widoku tekstu
- 1. Jak zmienić kolor tekstu części TextView?
- 2. Jak ustawić kolor tekstu pokrętła?
- 3. Android TextView: Zmień kolor tekstu po kliknięciu
- 4. C# Jak ustawić kolor tekstu w richtextbox?
- 5. Jak ustawić kolor tekstu w przycisku przesyłania?
- 6. Android: Jak ustawić kolor tekstu toast za
- 7. gradient tekstu css
- 8. Jak ustawić kolor tekstu podsumowania preferencji Androida?
- 9. Jak ustawić kolor tekstu za pomocą xlwt
- 10. Jak ustawić kolor tekstu tytułu UIButton?
- 11. Jak ustawić gradient gradient na UIView?
- 12. Jak uzyskać kolor tła TextView?
- 13. Jak mogę zmienić kolor textView android.R.layout.simple_spinner_dropdown_item?
- 14. Jak ustawić iOS jako gradient na obrazie UIBarButtonItem?
- 15. Android: kolor tekstu holo light
- 16. Jak ustawić kolor tekstu etykiety etykiet dla stanu UIControlStateHighlighted
- 17. Wybieracz Androida i kolor tekstu
- 18. Skalowanie tekstu Rozmiar w TextView
- 19. Animacja rozmiaru tekstu TextView
- 20. Jak ustawić kolor i styl czcionki tekstu zastępczego?
- 21. Gradient tekstu z czcionką niesamowitą
- 22. Notepad ++ zmienić kolor tekstu?
- 23. Jak programowo ustawić marginesy dla TextView?
- 24. Wielokrotne wyrównanie w TextView?
- 25. Jak ustawić kolor UnderlineSpan?
- 26. Jak programowo ustawić maxLength w Android TextView?
- 27. Jak ustawić kolor aUIBUTton?
- 28. Tekstowy kolor tła tekstu w Androidzie
- 29. Wybrany element autouzupełniania Textview Wyświetlaj jako prosty widok tekstu?
- 30. Jak ustawić kolor obrazu szablonowego w NSTextAtuowanie
Proszę odnieść to [1]: http: //stackoverflow.com/questions/2680607/text-with-gradient-in-android Myślę, że to ci pomoże. –
@pankaj Nie, to nie jest duplikat. Muszę to zrobić za pomocą gradientu XML, a nie gradientu kodu Java! –