Chcę znaleźć kolor tła układu z mojego kodu. Czy istnieje sposób, aby go znaleźć? coś w stylu linearLayout.getBackgroundColor()
?Pobierz kolor tła układu
Odpowiedz
Można to osiągnąć tylko w interfejsie API 11+, jeśli tło ma jednolity kolor.
int color = Color.TRANSPARENT;
Drawable background = view.getBackground();
if (background instanceof ColorDrawable)
color = ((ColorDrawable) background).getColor();
Chciałem tylko edytować moją odpowiedź i powiedzieć, że to może zadziałać! Jednak nie jestem pewien, dlaczego istnieje ograniczenie API 11+? 'ColorDrawable' wydaje się być dostępny od API 1, a także view.getBackground(). –
Nieważne. Widzę, że '.getColor' dla ColorDrawable został dodany w API 11. –
Możesz przekonwertować' Drawable' na 'Bitmap' i uzyskać pierwszy piksel. 'int color = bitmap.getPixel (0, 0);' –
ColorDrawable.getColor() działa tylko z poziomu API powyżej 11, więc można użyć tego kodu, aby wspierać go z poziomu API 1. Użyj refleksji poniżej poziomu API 11.
public static int getBackgroundColor(View view) {
Drawable drawable = view.getBackground();
if (drawable instanceof ColorDrawable) {
ColorDrawable colorDrawable = (ColorDrawable) drawable;
if (Build.VERSION.SDK_INT >= 11) {
return colorDrawable.getColor();
}
try {
Field field = colorDrawable.getClass().getDeclaredField("mState");
field.setAccessible(true);
Object object = field.get(colorDrawable);
field = object.getClass().getDeclaredField("mUseColor");
field.setAccessible(true);
return field.getInt(object);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return 0;
}
Aby uzyskać kolor tła układ:
LinearLayout lay = (LinearLayout) findViewById(R.id.lay1);
ColorDrawable viewColor = (ColorDrawable) lay.getBackground();
int colorId = viewColor.getColor();
jeśli jest RelativeLayout potem po prostu znaleźć swój identyfikator i używać tam obiekt zamiast LinearLayout.
Najprostszym sposobem na to jest:
view.getSolidColor();
krótki i prosty sposób:
int color = ((ColorDrawable)view.getBackground()).getColor();
- 1. Pobierz kolor tła okna
- 2. Pobierz kolor obrazu
- 3. zmiana koloru tła układu w Androidzie
- 4. Dostęp kolor tła textblock
- 5. Przejrzysty obraz - kolor tła
- 6. Przejrzysty kolor tła CSS
- 7. Eclipse Linijki kolor tła
- 8. Domyślny kolor tła powiadomienia
- 9. Kolor tła UIWebView
- 10. Kolor tła PreferenceFragment
- 11. Ustaw kolor tła: Android
- 12. Nieprzezroczystość CSS - kolor tła
- 13. Iphone UIButton kolor tła
- 14. "Przelewanie" CSS "kolor tła"
- 15. Kolor tła Android WebView
- 16. Nieaktywny kolor tła sterowania
- 17. Kolor tła kontekstowego/przesłaniania
- 18. Kolor tła wybranej opcji
- 19. Android - pobierz Wysokość układu nadrzędnego
- 20. Pobierz bieżący kolor
- 21. Android - jak ustawić kolor tła wszystkich ekranów?
- 22. Android - Custom AlertDialog Kolor tła
- 23. Jak zmienić kolor tła JOptionPane?
- 24. zmiana koloru tła UIAlertcontroller Kolor
- 25. jquery mobile przycisk kolor tła
- 26. Jak zmienić kolor tła TextBox?
- 27. Bootstrap .dropdown li kolor tła
- 28. Ustawienia SSRS Kolor tła HTML
- 29. JQuery UI Tabs Kolor tła
- 30. Kolor tła przycisku wpf hover
Ponieważ tło może być kolor, można użyć linearLayout.getBackground(), które dadzą jesteś "Drawable". Nie ma żadnego API, aby uzyskać konkretny kolor tła. [Czytaj więcej w dokumentach do widoku] (http://developer.android.com/reference/android/view/View.html#getBackground%28%29) –
Ale naprawdę muszę znaleźć kolor układu. Powinien być jakiś inny sposób! czy jest możliwe, aby uzyskać go z 'Drawable'? –