Yanıtlar:
Color
Sınıf yöntemini deneyin :
public static int parseColor (String colorString)
Gönderen Android belgeler :
Desteklenen formatlar şunlardır: #RRGGBB #AARRGGBB 'kırmızı', 'mavi', 'yeşil', 'siyah', 'beyaz', 'gri', 'mavi', 'macenta', 'sarı', 'açık gri', 'koyu gri '
#000
değerleri nasıl ayrıştırılacağını biliyor mu?
if(colorString.length() == 4) { colorString = "#" + StringUtils.repeat(colorString.substring(1, 1), 1) + StringUtils.repeat(colorString.substring(2, 2), 1) + StringUtils.repeat(colorString.substring(3, 3), 1) }
yanılıyorsam lütfen beni düzeltin
if(colorString.length() == 4 && colorString[0] == '#')
Deneyin:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
Bu soru altıgen renk ile ilgili bir dizi arama için geliyor, bu yüzden buraya bir özet ekleyeceğim.
Hex renkler şeklinde RRGGBB
veya AARRGGBB
(alfa, yeşil, mavi, kırmızı). Deneyimlerime göre, int
doğrudan kullanırken, tam AARRGGBB
formu kullanmanız gerekir . Yalnızca RRGGBB
forma sahipseniz FF
, alfa (saydamlık) tamamen opak hale getirmek için önekleyin. Kodda nasıl ayarlayacağınız aşağıda açıklanmıştır. Kullanılması 0x
başlayan vasıtası azından onaltılık ve 10 baz değildir.
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
Diğerleri de belirtildiği gibi, kullanabilirsiniz Color.parseString
şöyle
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
Dize'nin bir ile başlaması gerektiğini unutmayın #
. Hem RRGGBB
ve AARRGGBB
biçimleri desteklenir.
Renklerinizi mümkün olduğunca XML'den almanız gerekir. Bu, uygulamanızda renk değişiklikleri yapmayı çok kolaylaştırdığı için önerilen seçenektir. Kodunuz boyunca çok sayıda altıgen renk ayarlarsanız, bunları daha sonra değiştirmeye çalışmak büyük bir acıdır.
Android malzeme tasarımı, önceden yapılandırılmış onaltılık değerlerle renk damağına sahiptir.
Bu tema renkleri uygulamanızda kullanılır ve şöyle görünür:
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primary">#3F51B5</color>
<color name="primary_dark">#303F9F</color>
<color name="primary_light">#C5CAE9</color>
<color name="accent">#FF4081</color>
<color name="primary_text">#212121</color>
<color name="secondary_text">#757575</color>
<color name="icons">#FFFFFF</color>
<color name="divider">#BDBDBD</color>
</resources>
Ek renklere ihtiyacınız varsa, uygulamanız için iyi bir uygulama, renginizi xml'de iki adımda tanımlamaktır. Önce onaltılık değer rengini adlandırın ve ardından uygulamanızın belirli bir renk alması gereken bir bileşenini adlandırın. Bu, renkleri daha sonra ayarlamayı kolaylaştırır. Yine, bu colors.xml'de .
<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>
Ardından, kodu kodda ayarlamak istediğinizde aşağıdakileri yapın:
int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);
myView.setBackgroundColor(myColor);
Color sınıfı, önceden tanımlanmış bir dizi renk sabitiyle gelir. Bu şekilde kullanabilirsiniz.
int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);
Diğer renkler
Color.BLACK
Color.BLUE
Color.CYAN
Color.DKGRAY
Color.GRAY
Color.GREEN
Color.LTGRAY
Color.MAGENTA
Color.RED
Color.TRANSPARENT
Color.WHITE
Color.YELLOW
Bir o dizeyi dönüştürmek int
kullanılabilir renk setBackgroundColor
vesetTextColor
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
16, onaltılı olduğu anlamına gelir ve normal 0-9 değil. Sonuç şununla aynı olmalıdır
int color = 0xFFFF0000;
#80000000
int durumda olacağını bu durumda olduğunu düşünüyorum int color = 0x80000000;
. Bu işe yaramazsa , benden daha fazla kişinin fark edeceği şekilde daha fazla ayrıntı içeren yeni bir soru gönderin . Unutmayın, #80000000
yarı saydam bir siyah renk.
Onun
int color = Color.parseColor("colorstring");
Bunu kullanıyorum ve istediğim rengi ayarlamak için benim için harika çalışıyor.
public static final int MY_COLOR = Color.rgb(255, 102, 153);
Her kırmızı, yeşil ve mavi için 0-255 kullanarak renkleri ayarlayın, sonra o rengin istediğiniz yere Color.BLUE veya Color.RED veya Color sınıfının sunduğu diğer statik renklerin yerine MY_COLOR koyun.
Sadece renk tablosu için bir Google araması yapın ve 0-255 kullanarak doğru RGB kodlarına sahip bir grafik bulabilirsiniz.
In Xamarin Bunu kullanın
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
Res / value / colors.xml dosyasına kaydedilen XML dosyası:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<color name="translucent_red">#80ff0000</color>
</resources>
Bu uygulama kodu renk kaynağını alır:
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
Bu mizanpaj XML rengi bir özniteliğe uygular:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/translucent_red"
android:text="Hello"/>
Bunun yerine 0xFFF000 kullanmayı deneyin ve bunu Color.HSVToColor yöntemine iletin.