问题描述
我想添加自定义的而ActionView
我的动作条
。
I am trying to add a custom ActionView
to my ActionBar
.
我想添加公共刷新按钮。 (的ImageButton
,进度
在的FrameLayout
),但如果我使用而ActionView
onOptionsItemSelected()
永远不会被调用。
I am trying to add the common refresh button. (ImageButton
, ProgressBar
inside a FrameLayout
) but if I use an ActionView
onOptionsItemSelected()
is never called.
这里的code:
在我的活动
:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.messages_actionbar, menu);
mRefreshView = (RefreshView) menu.findItem(R.id.messages_refresh).getActionView();
return super.onCreateOptionsMenu(menu);
}
messages_actionbar
的SRC:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/messages_refresh"
android:title="title"
android:icon="@drawable/icon"
android:showAsAction="always"
android:actionViewClass="com.blabla.RefreshView"/>
</menu>
RefreshView
的code:
public class RefreshView extends FrameLayout {
private ImageView mButton;
private ProgressBar mProgressBar;
private boolean mLoading;
public RefreshView(Context context) {
super(context, null);
initView(context);
}
public RefreshView(Context context, AttributeSet attrs) {
super(context, attrs, 0);
initView(context);
}
public RefreshView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView(context);
}
private void initView(Context context) {
LayoutInflater inflator = LayoutInflater.from(context);
View v = inflator.inflate(R.layout.actionbar_refresh, this);
mProgressBar = (ProgressBar) v.findViewById(R.id.action_refresh_progress);
mButton = (ImageView) v.findViewById(R.id.action_refresh_button);
}
public void setLoading(boolean loading) {
if (loading != mLoading) {
mProgressBar.setVisibility(loading ? View.VISIBLE : View.GONE);
mButton.setVisibility(loading ? View.GONE : View.VISIBLE);
mLoading = loading;
}
}
}
actionbar_refresh
的SRC code:
actionbar_refresh
's src code:
<?xml version="1.0" encoding="utf-8" ?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/action_refresh_button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:scaleType="center"
android:background="@drawable/icon" />
<ProgressBar
android:id="@+id/action_refresh_progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone"
android:indeterminate="true" />
</FrameLayout>
在另一方面,如果我设置了 clickListener
到的ImageView
在 RefreshView
类它被调用。
On the other hand, if I set a clickListener
to the ImageView
inside the RefreshView
class it gets called.
任何人都这样做了吗?
推荐答案
我结束了使用src code从的 HTTP://$c$c.google.com/p/styled-action-bar/
I ended up using the src code from http://code.google.com/p/styled-action-bar/.
这篇关于自定义操作视图不能点击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!