2009-12-16 40 views
11

Tôi có một tùy chỉnh spinner thả xuống tập tin xml trong/res/layout /:Android Spinner - Làm cách nào để làm cho chế độ xem thả xuống trong suốt?

spinner_view_dropdown.xml: 

<?xml version="1.0" encoding="UTF-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/spinner_item_dropdown" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@android:color/transparent" 
style="@style/spinner_item_dropdown" /> 

Tôi đang thiết thả xuống spinner qua java:

// "Spinner", aka breadcrumbs 
    Spinner spin = (Spinner) findViewById(R.id.breadcrumb_dropdown); 

    ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.breadcrumb, R.layout.spinner_view); 

    adapter.setDropDownViewResource(R.layout.spinner_view_dropdown); 

    spin.setAdapter(adapter); 
    // /"Spinner" 

Thật không may, một nền trắng vẫn tồn tại trên cửa sổ bật lên spinner bất kể nếu tôi đặt nền thành trong suốt.

Làm cách nào để khắc phục sự cố này?

+0

Bạn đã thiết lập nền trong suốt, tuy nhiên TextView được tổ chức tại một hộp thoại và hộp thoại có một màu nền. – Blundell

Trả lời

29

Bạn có thể ghi đè lên phong cách cho thả xuống, và mục thả xuống bằng cách sử dụng một chủ đề trong ứng dụng của bạn được thừa kế từ một trong những chủ đề Android, sau đó ghi đè lên

android:dropDownSpinnerStyle, hoặc android:spinnerDropDownItemStyle, và thậm chí cả android:dropDownListViewStyle thuộc tính của chủ đề, chỉ vào phong cách tùy chỉnh của riêng bạn thay vì phong cách Android được xác định trong chủ đề của họ. Tôi tạo ra một spinner hoàn toàn tùy chỉnh theo cách này, với một nút VÀ thả xuống trong suốt. Tôi thậm chí đã loại bỏ các ngăn kéo danh sách thả xuống, và thiết lập khoảng cách riêng của tôi cho các mục thả xuống khi tôi xây dựng ứng dụng máy tính bảng cho Fandango (hãy xem các bộ phim sắp xếp trên trang chính của ứng dụng).

Mọi thứ trong Android đều có thể tùy chỉnh, bạn chỉ cần biết nơi cần tìm.;-)

+3

Bạn có thể đưa ra ví dụ về cách thực hiện điều bạn đã gợi ý không? – Junaid

+0

@Junaid Tôi nghĩ bạn nên học tốt hơn với việc nghiên cứu tài liệu: http://developer.android.com/guide/topics/ui/themes.html –

+3

Maaaaaaan! Cảm ơn vì điều đó. Nhưng ví dụ nhỏ vẫn sẽ hữu ích :) –

1

Bố cục bạn đang xác định chỉ được sử dụng cho một mục nhập của trình đơn thả xuống của bạn, chứ không phải chính thả xuống. Vì vậy, thiết lập nền để minh bạch sẽ không có bất kỳ tác dụng trên nền của nó. Nhưng ngay cả khi nó sẽ, thiết lập nền để minh bạch sẽ vẫn không có hiệu lực, bởi vì một TextView (thực sự tôi tin rằng bất kỳ xem) có một nền trong suốt theo mặc định.

Điều đó đang được nói, câu hỏi đúng là: bạn có thể cung cấp bố cục tùy chỉnh cho chế độ xem gốc của một mục nhập (có lẽ đây là Danh sách) không? Theo như tôi biết, không may là câu trả lời là không.

+0

Cảm ơn bạn đã phản hồi. Điều khó hiểu là Photoshop Mobile của Adobe dường như sử dụng một hệ thống thả xuống gắn liền với các biểu tượng của nó được sử dụng để chỉnh sửa một hình ảnh. Đây là hiệu ứng tôi đang cố gắng lặp lại và tôi cho rằng nó đã sử dụng một spinner. Đây là một bộ phim hiển thị hiệu ứng này trong ứng dụng: http://blogs.adobe.com/rjacquez/2009/11/adobe_debuts_photoshopcom_mobi.html – iamkoa

+1

có thể họ sử dụng PopupWindow tùy chỉnh? http://developer.android.com/reference/android/widget/PopupWindow.html – Matthias

0

Đó là một lỗi trong 1,5 Tôi nghĩ, xem tại đây

http://www.symsource.com/index.php?view=article&id=418&option=com_content&format=pdf

Run nó trong một giả lập 1.6 hoặc thiết bị, nó vẫn ở lại trắng?

Tôi thực sự đã đến đây để tìm cách tiếp cận này, tôi nghi ngờ điều này có thể liên quan đến việc viết tay vào canvas hoặc một cái gì đó tương tự.

Mọi ý tưởng.

P.S. Vô tình đăng khi tôi nghĩ rằng tôi đã đăng nhập, bất cứ ai biết làm thế nào để thoát khỏi nhận xét vô danh? Có thể một quản trị viên có thể sửa lỗi này?

26

Cố gắng thiết lập trên spinner này:

android:popupBackground="@android:color/transparent" 
+1

Cảm ơn người đàn ông! tôi đã sử dụng màu này cho một màu tùy chỉnh: android: popupBackground = "# 0f0f0f" hoạt động hoàn hảo – Jakob

Các vấn đề liên quan