将click监听器添加到titlebar图像

时间:2012-12-25 18:53:04

标签: android android-activity titlebar

圣诞快乐,祝大家节日快乐!

我正在尝试在默认标题栏左侧显示的图片图标上设置一个监听器,但到目前为止没有运气。

这是我的活动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!");
       }
   });
}

有什么建议吗?我希望看不到答案“这是不可能的”:)

2 个答案:

答案 0 :(得分:4)

左侧图标似乎没有ID,但是对于经典标题栏,有一个ID可用:android.R.id.title以下是使用此ID的示例活动。无论主题如何,requestWindowFeature(Window.FEATURE_LEFT_ICON);都应强制使用经典标题栏。

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();
        }
    });
}
}

基本上,这样做,是找到标题栏的ID(android.R.id.title),然后为其分配onClickListener

这将ActionBar一起使用,只有经典的窗口标题栏。

答案 1 :(得分:1)

您应该使用ActionBar。使用ActionBarSherlock也可以将其用于低于3.0的Android版本。要使图标可单击,请参阅ActionBar API文档(请参阅下面的链接)。这很简单,你只需激活行为,然后它就像一个带有特殊item-id的菜单项。