2012-12-25 26 views
6

圣诞快乐和节日快乐大家!添加点击监听器标题栏图片

我试图在默认标题栏左侧出现的图像图标上设置侦听器,但至今没有任何运气。

这里是我活动的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

你是在说[这个标题栏](http://sree.cc/wp-content/uploads/2011/02/image1.jpg)?如果是这样,你应该考虑实现一个ActionBar,标题栏现在几乎不赞成作为一个UI习惯用法。 – dmon

+0

是的,我想你会使用ActionBar并且实现你的activity的'onOptionsItemSelected()'方法。我相信ActionBar上的应用程序图标的ID是'android.R.id.home' – Karakuri

回答

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

基本上,这是什么呢,是它发现了标题栏(android.R.id.title)的ID,然后分配一个onClickListener它。

这将工作ActionBar s,只有经典的窗口标题栏。

+0

你真的尝试过在手机上运行这个吗?我得到了Galaxy S3的空指针。 –

+0

是的,在4.0.4上。你需要有一个经典的主题,如Theme.Black/Theme.Light。新的Holo主题使用ActionBar,与其他人提到的一样使用不同的实现。 –