我已经使用了工具栏所以现在我想在徽标图标上应用点击事件我怎么能得到这个事件?
这是我做过的一些编码
Toolbar toolbar = null; toolbar = (Toolbar) findViewById(R.id.actionToolbar); setSupportActionBar(toolbar); setTitle(null); toolbar.setNavigationIcon(R.drawable.back); toolbar.setNavigationContentDescription("BACK"); toolbar.setLogo(R.drawable.ic_launcher); toolbar.setLogoDescription("LOGO"); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"Nav",Toast.LENGTH_SHORT).show(); } });
在这里,我设置了导航图标和徽标图标,所以现在我想要logo图标的点击事件,怎么可能?
解决方法
你需要首先参考它
View logoView = getToolbarLogoView(toolbar); logoView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //logo clicked } });
使用内容描述我们可以获得View参考.请参阅内联评论.
public static View getToolbarLogoIcon(Toolbar toolbar){ //check if contentDescription previously was set boolean hadContentDescription = android.text.TextUtils.isEmpty(toolbar.getLogoDescription()); String contentDescription = String.valueOf(!hadContentDescription ? toolbar.getLogoDescription() : "logoContentDescription"); toolbar.setLogoDescription(contentDescription); ArrayList<View> potentialViews = new ArrayList<View>(); //find the view based on it's content description,set programatically or with android:contentDescription toolbar.findViewsWithText(potentialViews,contentDescription,View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION); //Nav icon is always instantiated at this point because calling setLogoDescription ensures its existence View logoIcon = null; if(potentialViews.size() > 0){ logoIcon = potentialViews.get(0); } //Clear content description if not previously present if(hadContentDescription) toolbar.setLogoDescription(null); return logoIcon; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。