2010-01-19 23 views
6

Tôi đang làm việc trên ứng dụng Android và tôi có thể hiển thị nhiều biểu tượng trên bản đồ bằng ItemizedOverlay và tôi cũng đã triển khai phương thức onTap (int index) của ItemizedOverlay để hiển thị thông tin biểu tượng cụ thể trong cửa sổ yêu cầu.setFocus (overlayItem) của ItemizedOverlay không hoạt động

Bây giờ, tôi muốn thay đổi biểu tượng của lớp phủ đã chọn khi người dùng nhấp vào một số đối tác khác. Tôi đang gọi phương thức setFocus (OverlayItem) của ItemizedOverlay để hiển thị biểu tượng khác nhau của lớp phủ cụ thể. nó hoạt động tốt khi người dùng chạm vào bất kỳ lớp phủ cụ thể nào nhưng không thay đổi biểu tượng khi tôi gọi phương thức setFocus (OverlayItem).

Mọi con trỏ? cách tốt nhất của biểu tượng thay đổi chương trình của lớp phủ đã chọn trong mapView là gì?

Tôi đã bỏ qua phương thức getMarker của lớp OverlayItem tùy chỉnh của tôi để hiển thị các điểm đánh dấu khác nhau cho trạng thái khác nhau của overlayItem. và tôi muốn sử dụng phương thức setFocus (OverlayItem) để thay đổi trạng thái của OverlayItem và cũng thay đổi điểm đánh dấu khi được chọn.

@Override 
public Drawable getMarker(int stateBitset){ 
if(stateBitset==0){ 
    icon = Util.getCategoryMapIcon(0); 
    icon.setBounds(0-icon.getIntrinsicWidth()/2, 0-icon.getIntrinsicHeight(), icon.getIntrinsicWidth()/2, 0); 
    return icon; 
}else { 
    icon = Util.getCategoryMapIcon(OverlayItem.ITEM_STATE_SELECTED_MASK); 
    icon.setBounds(0-icon.getIntrinsicWidth()/2, 0-icon.getIntrinsicHeight(), icon.getIntrinsicWidth()/2, 0); 
    return icon; 
} 
} 

tại đây Util.getCategoryMapIcon (0) là phương pháp tiện ích để trả về biểu tượng thích hợp, phương pháp này tôi đã xóa để làm cho ví dụ này trông đơn giản.

và dưới đây là mã để thay đổi trạng thái

Button leftNavigation = (Button) findViewById(R.id.left_navigation_button); 
leftNavigation.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
    OverlayItem item = searchResultsOverlay.get(index+1); 
    setFocus(item); 
} 
}); 

Bất kỳ trợ giúp sẽ được nhiều đánh giá cao. Cảm ơn, Aamir

Trả lời

0

Trong mã getMarker của bạn, hãy thử trả lại một StateListDrawable (tương ứng với <selector> trong XML drawable) có chứa đối tượng vẽ được mặc định (không có bang) và có thể vẽ với trạng thái android.R.attr.state_focused.

Xem câu hỏi có liên quan tại đây: Android ListView Selector Color

+0

Có may mắn với câu trả lời này không? Hãy theo dõi. –

+0

Cảm ơn Roman. Nó hoạt động rất tốt. –

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