6

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

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

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

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

4

2 回答 2

4

左侧图标似乎没有 id,但是对于经典标题栏,有一个可用的 id:android.R.id.title这是使用此 id 的示例 Activity。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

不适用于ActionBars,仅适用于经典窗口标题栏。

于 2012-12-25T19:29:24.507 回答
1

您应该使用 ActionBar。对于低于 3.0 的 Android 版本,也可以使用ActionBarSherlock 。要使图标可点击,请参阅 ActionBar API 文档(请参阅下面的链接)。这非常简单,您只需激活该行为,然后它就可以像具有特殊项目 ID 的菜单项一样工作。

于 2012-12-25T20:47:26.667 回答