Android 将单击侦听器添加到标题栏图像

Android 将单击侦听器添加到标题栏图像,android,android-activity,titlebar,Android,Android Activity,Titlebar,祝大家圣诞快乐,节日快乐 我试图在默认标题栏左侧出现的图像图标上设置一个侦听器,但到目前为止没有任何运气 以下是我的活动onCreate: @Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_LEFT_ICON); super.onCreate(savedInstanceState); findViewById(Window.FEATURE

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

我试图在默认标题栏左侧出现的图像图标上设置一个侦听器,但到目前为止没有任何运气

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

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

左侧图标似乎没有id,但是对于经典标题栏,有一个可用的id:
android.R.id.title
这里是一个使用此id的示例活动。
requestWindowFeature(Window.FEATURE\u left\u图标)都应强制使用经典标题栏

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
s一起工作,只与经典的窗口标题栏一起工作。

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


为什么不使用ActionBar?你在说什么?如果是这样的话,您应该研究如何实现ActionBar,现在标题栏作为一种UI习惯用法已经被弃用了。是的,我认为您应该使用ActionBar并实现活动的
OnOptions ItemSelected()
方法。我相信ActionBar上应用程序图标的id是android.R.id.home
@RaghavSood,因为我不想进行完全定制。我已经对默认的外观很满意了,所以我觉得添加一个点击监听器要比重新设计轮子容易得多,知道我的意思吗?@dmon我实际上是在模仿这样的东西:左上角的图标是可点击的。这是通过ActionBar实现的吗?如果是这样的话,我该怎么做呢?创建自定义视图并用它覆盖默认标题栏?如果是的话,应用程序通常使用的高度是多少?你真的在手机上运行过吗?我的Galaxy S3有一个空指针。是的,在4.0.4上。您需要有一个经典的主题,例如theme.Black/theme.Light。新的Holo主题使用ActionBar,它与前面提到的其他人一样使用不同的实现。