2012-12-25 34 views
6

Giáng sinh vui vẻ và Chúc nghỉ lễ vui vẻ!thêm trình nghe nhấp chuột vào hình ảnh thanh tiêu đề

Tôi đang cố gắng thiết lập trình nghe trên biểu tượng hình ảnh xuất hiện ở bên trái của thanh tiêu đề mặc định, nhưng cho đến nay không có bất kỳ may mắn nào.

Dưới đây là Hoạt động của tôi onCreate:

@Override public void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_LEFT_ICON); 
    super.onCreate(savedInstanceState); 
    findViewById(Window.FEATURE_LEFT_ICON).setOnClickListener(new OnClickListener() { 
     @Override public void onClick(View v) { 
      System.out.println("It works!"); 
     } 
    }); 
} 

Bất kỳ lời đề nghị? Tôi hy vọng sẽ không nhìn thấy câu trả lời "không thể" :)

+2

Tại sao bạn không sử dụng một ActionBar? –

+0

Bạn đang nói về [tiêu đề này] (http://sree.cc/wp-content/uploads/2011/02/image1.jpg)? Nếu vậy, bạn nên xem xét việc thực hiện một ActionBar, thanh tiêu đề bây giờ là khá nhiều không được chấp nhận như là một thành ngữ giao diện người dùng. – dmon

+0

Có, tôi nghĩ bạn sẽ sử dụng ActionBar và thực hiện phương thức 'onOptionsItemSelected()' của hoạt động của bạn. Tôi tin rằng id của biểu tượng ứng dụng trên ActionBar là 'android.R.id.home' – Karakuri

Trả lời

4

Có vẻ như không phải là id cho biểu tượng bên trái, tuy nhiên đối với thanh tiêu đề cổ điển, có id: android.R.id.title Đây là một Hoạt động mẫu sử dụng id này. requestWindowFeature(Window.FEATURE_LEFT_ICON); sẽ buộc thanh tiêu đề cổ điển bất kể chủ đề.

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_LEFT_ICON); 
    setContentView(R.layout.activity_main); 
    getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,R.drawable.ic_launcher); 
    View v = findViewById (android.R.id.title); 
    v.setClickable(true); 
    v.setOnClickListener(new OnClickListener() { 
     @Override public void onClick(View v) { 
      Toast.makeText(MainActivity.this, "Works!", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
} 

Về cơ bản, điều này không, là nó tìm thấy id của thanh tiêu đề (android.R.id.title) sau đó gán một onClickListener với nó.

Điều này sẽ không làm việc với ActionBar s, chỉ các thanh tiêu đề cửa sổ cổ điển.

+0

Bạn đã thực sự cố gắng chạy trên điện thoại? Tôi nhận được một con trỏ null với Galaxy S3 của tôi. –

+0

Có, trên 4.0.4. Bạn cần phải có một chủ đề cổ điển, chẳng hạn như Theme.Black/Theme.Light. Các chủ đề Holo mới sử dụng ActionBar, giống như những người khác được đề cập sử dụng triển khai khác. –

1

Bạn nên sử dụng ActionBar. Sử dụng ActionBarSherlock để có nó cũng cho các phiên bản Android ít hơn 3.0. Để làm cho Biểu tượng có thể nhấp, hãy xem Tài liệu API ActionBar (xem liên kết bên dưới). Nó rất dễ dàng, bạn chỉ cần kích hoạt hành vi và sau đó nó hoạt động giống như một mục trình đơn với một mục đặc biệt-id.

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