2013-02-14 55 views
13

Tôi đang viết một ứng dụng Android cho máy tính bảng. Tôi đã đi với thanh hành động để tạo ra các biểu tượng của tôi. Tuy nhiên, tôi cần mở chế độ xem tùy chỉnh khi một trong các mục menu được nhấp.Thanh tác vụ Android tùy chỉnh chế độ xem thả xuống trên mục nhấp vào

Tôi không muốn thanh tác vụ tùy chỉnh - Tôi cần tăng lượt xem tùy chỉnh khi nhấp vào mục tác vụ "Duyệt đối tượng". Chế độ xem này sẽ cần phải xuất hiện giống như trình đơn thả xuống nhưng đang sử dụng bố cục tùy chỉnh của riêng tôi vì nó sẽ không được sử dụng để điều hướng.

Drop down menu

Đây là menu.xml tôi

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/menu_browse" 
     android:title="Browse Subjects" 
     android:showAsAction="always" 
     android:actionLayout="@layout/action_layout_browse" 
     android:actionProviderClass="au.com.pearson.f12catalogue.action_providers.BrowseProvider" 
      /> 
    <item android:id="@+id/menu_settings" 
     android:title="Settings" 
     android:orderInCategory="100" 
     android:showAsAction="never" /> 
</menu> 

tôi cho rằng các ActionProviderClass sẽ cho phép tôi để nhanh chóng một giao diện tùy chỉnh khi mục thanh hành động được nhấp nhưng tôi không thể làm việc ra một cách - có lẽ tôi đang đi sai đường.

Bất kỳ trợ giúp nào về điều này sẽ là MUCH được đánh giá cao! Cảm ơn!

CẬP NHẬT: Cảm ơn bạn đã liên kết đến tạo kiểu thanh tác vụ nhưng tôi không muốn chỉ đơn giản là tạo kiểu menu thả xuống. Tôi muốn tăng lượt xem tùy chỉnh. Chế độ xem sẽ thực hiện truy vấn DB v.v.

+1

tôi đang tìm kiếm một mẫu mà bạn đã đăng tải như hình ảnh trên đây, bạn có thể xin vui lòng cung cấp cho tôi bất kỳ ví dụ mẫu hoặc gợi ý làm thế nào để tạo ra thả xuống tùy chỉnh và tự động thêm các mục trình đơn ở đó. – Naruto

+1

giao diện người dùng có vẻ tốt. bạn đã hoàn thành ứng dụng chưa? nó có tải xuống không? – Zen

Trả lời

11

Ok tôi đã tự mình tìm ra giải pháp. Về cơ bản actionProviderClass được sử dụng để khởi tạo một actionView trong actionBar. Trong lớp học này, bạn có thể đính kèm trình nghe onClick vào chế độ xem mà bạn phát ra. Tôi đã sử dụng trình nghe này để tăng lượt xem thả xuống trong khung chính khi được nhấp.

Ví dụ

public class BaseProvider extends ActionProvider { 

    protected final Context context; 
    protected final int layout; 
    protected final BaseProvider self; 
    protected View view; 
    protected int positionLeft = 0; 
    protected Dropdown dropdown; 

    public BaseProvider(Context context, int layout, Dropdown dropdown) { 
     super(context); 
     this.layout = layout; 
     this.context = context; 
     this.self = this; 
     this.dropdown = dropdown; 
    } 

    @Override 
    public View onCreateActionView() { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View view = inflater.inflate(this.layout, null); 

     view.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       self.onItemClick(); 
      } 
     }); 
     this.view = view; 
     return view; 
    } 

    public boolean onItemClick(){ 
     toggleDropdown(); 
     return true; 
    } 

    protected void toggleDropdown(){ 
     this.positionLeft = getRelativeLeft(view); 
     DropdownInflater.getInstance().toggleDropdown(this.dropdown,this.positionLeft); 
    } 

    protected int getRelativeLeft(View view) { 
     int[] loc = new int[2]; 
     view.getLocationOnScreen(loc); 
     return loc[0]; 
    } 
} 
+10

Sẽ thật tuyệt vời nếu bạn có thể cung cấp thông tin về cách bạn đã thực hiện lớp Dropdown. Nó dựa trên một số Widget khác hoặc là nó chỉ là một ListView bằng cách nào đó? – jelgh

+0

Bạn đã đính kèm trình nghe onClick cho các mục trong ActionProvider ở đâu và ở đâu? – lschlessinger

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