Làm cách nào để tôi nhận được màu nền của một nút. Trong xml tôi thiết lập màu nền bằng cách sử dụng ---- android: background = XXXXX bây giờ trong lớp hoạt động như thế nào tôi có thể lấy giá trị này mà nó có?Lấy màu nền của một nút trong android
Trả lời
Thật không may là tôi không biết cách lấy màu thực tế.
Thật dễ dàng để có được điều này như một Drawable
Button button = (Button) findViewById(R.id.my_button);
Drawable buttonBackground = button.getBackground();
Nếu bạn biết đây là một màu sau đó bạn có thể thử
ColorDrawable buttonColor = (ColorDrawable) button.getBackground();
Và nếu bạn đang sử dụng Android 3.0+ bạn có thể nhận ra id tài nguyên của màu.
int colorId = buttonColor.getColor();
Và so sánh điều này với màu được chỉ định của bạn, ví dụ:
if (colorID == R.color.green) {
log("color is green");
}
Để có được nền Drawable
, bạn sử dụng
public Drawable getBackground();
theo quy định tại các cơ sở View
lớp.
Đừng quên rằng Button
có thể có nền là hình ảnh, màu, độ dốc. Nếu bạn sử dụng android: background = "# ffffff", lớp nền sẽ là
android.graphics.drawable.ColorDrawable
Từ đó bạn chỉ có thể gọi
public int getColor()
Bạn cũng có thể thử một cái gì đó giống như thiết lập giá trị màu như thẻ như
android:tag="#ff0000"
Và truy cập nó từ mã
String colorCode = (String)btn.getTag();
private Bitmap mBitmap;
private Canvas mCanvas;
private Rect mBounds;
public void initIfNeeded() {
if(mBitmap == null) {
mBitmap = Bitmap.createBitmap(1,1, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
mBounds = new Rect();
}
}
public int getBackgroundColor(View view) {
// The actual color, not the id.
int color = Color.BLACK;
if(view.getBackground() instanceof ColorDrawable) {
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
initIfNeeded();
// If the ColorDrawable makes use of its bounds in the draw method,
// we may not be able to get the color we want. This is not the usual
// case before Ice Cream Sandwich (4.0.1 r1).
// Yet, we change the bounds temporarily, just to be sure that we are
// successful.
ColorDrawable colorDrawable = (ColorDrawable)view.getBackground();
mBounds.set(colorDrawable.getBounds()); // Save the original bounds.
colorDrawable.setBounds(0, 0, 1, 1); // Change the bounds.
colorDrawable.draw(mCanvas);
color = mBitmap.getPixel(0, 0);
colorDrawable.setBounds(mBounds); // Restore the original bounds.
}
else {
color = ((ColorDrawable)view.getBackground()).getColor();
}
}
return color;
}
này phải là câu trả lời được chấp nhận – IHeartAndroid
Cách đơn giản nhất để có được màu cho tôi là:
int color = ((ColorDrawable)button.getBackground()).getColor();
Tested và làm việc trên Lollipop 5.1.1
Hãy thử điều này:
list_view.getChildAt(position).setBackgroundColor(Color.YELLOW);
ColorDrawable corItem = (ColorDrawable) list_view.getChildAt(position).getBackground();
if(corItem.getColor() == Color.YELLOW){
Toast.makeText(NovoProcessoActivity.this,"Right Color!", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(NovoProcessoActivity.this,"Wrong Color!", Toast.LENGTH_SHORT).show();
}
hoặc
int color =((ColorDrawable) list_view.getChildAt(position).getBackground()).getColor();
- 1. nút Android màu nền
- 2. Android: Cách lấy màu nền của Hoạt động trong Java?
- 3. Nút màu nền của nút wpf
- 4. Android: nút với hai màu nền
- 5. Lấy màu nền của ImageView
- 6. Cách đặt màu nền của một nút trong GUI Java?
- 7. thay đổi màu nền của bố cục trong Android
- 8. Nút Android với các màu nền khác nhau
- 9. Lấy tọa độ X & Y của một nút trong Android?
- 10. Android - SimpleCursorAdapter.ViewBinder - Đặt màu nền
- 11. làm thế nào để có được màu nền của nút trên Android?
- 12. đặt màu nền: Android
- 13. Làm cách nào để thay đổi màu của nút màu khi được nhấn trong Android?
- 14. Cách đặt lại màu nền của nút thành mặc định?
- 15. C# Thay đổi màu nền của nút A
- 16. Cách đặt màu nền trước của nút SWT?
- 17. gtk (mm) 3 thay đổi màu nền của nút
- 18. Android: Tự động thay đổi màu nền của TextView
- 19. jquery nút di động màu nền
- 20. Màu nền của iPhone UIButton
- 21. Cách thay đổi màu nền của nút bật tắt trên Android
- 22. Cách lấy màu nền của phần tử bằng javascript?
- 23. Nút có BOTH màu và hình nền
- 24. Android - Màu nền AlertDialog tùy chỉnh
- 25. Màu nền của giao diện người dùng Jquery thay đổi màu nền trong một ngày
- 26. Màu nền của một mục ListBox (winforms)
- 27. Thay đổi màu nền của một NSCollectionView
- 28. màu nền trong OpenGL
- 29. Chế độ chia tách màu nền của tab ActionBar Android
- 30. Cách thay đổi màu nền của thanh trạng thái android
Bạn có chắc chắn getColor() được id? Tôi nghĩ rằng nó nhận được giá trị int thực tế của màu (ví dụ: 0xAARRGGBB). Tôi đã thử nghiệm điều này với "# 00000001" và nó trả lại 1. – brianestey
Trong thử nghiệm của tôi, tôi đã làm 'button.setBackground (R.color.green)' và sau đó kiểm tra phản hồi và chắc chắn nó không phải là id màu thực. Tôi muốn một số nguyên thích hợp màu sắc vì vậy tôi có thể 'Color.red (int)', 'Color.green (int)', 'Color.blue (int)' nó. Nhưng trong thử nghiệm của tôi trên Android 3.2, đây không phải là trường hợp.Tôi đoán rằng nó không nhất quán, trả về một màu int, hoặc dư, tùy thuộc vào ngữ cảnh. –
chỉ là API 11+ –