2011-01-29 51 views
11

Trong ứng dụng Android, bạn có thể mở cửa sổ bật lên spinner từ nút bấm thay vì nhấn nút xoay thực tế không?Android: Mở Spinner từ Nút

Tôi đã thử những điều sau đây:

Button btnChange = (Button)findViewById(R.id.btnChange); 
      btnChange.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
        Spinner mySpinner = (Spinner) findViewById(R.id.sSpinner); 
        mySpinner.showContextMenu(); 
        } 
       }); 

Trả lời

-7

Trong một ứng dụng Android, là nó có thể mở cửa sổ bật lên spinner từ một nút bấm thay vì nhấn spinner thực tế?

Dường như không. Tôi không thấy một phương thức trong SDK có vẻ như sẽ kích hoạt danh sách popup.

IMHO, đó là một điều tốt - bất cứ điều gì bạn đang cố gắng hoàn thành có thể có thể được thực hiện theo một số cách khác sẽ ít gây nhầm lẫn cho người dùng.

57

Xin lỗi vì trễ trả lời - nó có thể:

((Spinner) findViewById(R.id.mySpinner)).performClick(); 
+29

Không bao giờ quá muộn để trả lời: http://xkcd.com/979/ –

+3

@Zeratul, performClick trực tiếp gọi phương thức onItemSelected của spinner, phải không? Có cách nào chúng ta có thể hiển thị spinner trên onClick và onItemSelected của khung nhìn khác sẽ được gọi sau khi chúng ta chọn một mục không? – Khobaib

14

Có thể, bạn chỉ cần gọi nó đơn popup, không spinner.

ImageView imageView = (ImageView) findViewById(R.id.image); 
     imageView .setOnClickListener(new OnClickListener(){ 
      PopupMenu pum = new PopupMenu(this, findViewById(R.id.image)); 
      pum.inflate(R.menu.image_chooser_popup); 
      pum.show(); 

      }); 
} 

spinner của bạn (hoặc cửa sổ bật lên) mục đi vào R.menu.image_chooser_popup:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

<item 
    android:title="take a picture" 
    android:titleCondensed="camera" 
    android:visible="true" 
    android:onClick="cameraIntent" /> 
<item 
    android:title="choose picture from gallery" 
    android:titleCondensed="string" 
    android:visible="true" 
    android:onClick="galleryIntent"/> 

Hope này giúp một số một. Nếu bạn có bất kỳ vấn đề nào với phản hồi của tôi, vui lòng điền vào để yêu cầu.

5

Hãy thử điều này một:

Spinner mySpinner = (Spinner) findViewById(R.id.sSpinner); 
Button btnChange = (Button)findViewById(R.id.btnChange);  
btnChange.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        mySpinner.performClick(); 
       } 
      }); 
Các vấn đề liên quan