我有一个带工具栏的全屏DialogFragment。在工具栏的右侧,我有一个项目。我想在点击项目时执行操作。问题是,当我点击它时没有任何反应。但如果我点击屏幕边缘旁边的那个动作就会被调用。
我打印“项目点击!”什么时候叫它。您可以在下面看到工具栏。
仅当我点击屏幕上红色圆圈部分时才会调用onMenuItemClick方法。
这是扩展DialogFragment的类:
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setStyle(DialogFragment.STYLE_NORMAL, R.style.Preference_DialogPreference_Material);
fish = getArguments().getParcelable("species");
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_fish_details, container, false);
Toolbar toolbar = (Toolbar) v.findViewById(R.id.toolbar);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// Handle the menu item
System.out.println("clicked");
return true;
}
});
toolbar.inflateMenu(R.menu.details);
toolbarTitle = (TextView) toolbar.findViewById(R.id.toolbar_title);
toolbarTitle.setText(R.string.learn);
我正在使用的菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="ch.boas.aquatis.android.activity.MainActivity" >
<item android:id="@+id/action_share"
android:title="Share"
android:icon="@drawable/ic_share_species"
app:showAsAction="always"/>
</menu>
此片段的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimaryDark"
android:fitsSystemWindows="true"
android:orientation="vertical"
android:weightSum="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimaryDark"
app:popupTheme="@style/AppTheme.PopupOverlay">
<TextView
android:id="@+id/toolbar_title"
style="@style/pages_titles"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="@color/mr_white"
android:gravity="center">
<ImageView
android:id="@+id/fish_photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="7dp" />
<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:indeterminate="true"
android:indeterminateTint="@color/colorPrimary"
android:indeterminateTintMode="src_atop" />
</RelativeLayout>
</LinearLayout>
<ScrollView style="@style/scrollview_style">
<RelativeLayout
android:id="@+id/abc"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:paddingBottom="10dp"
android:paddingTop="190dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/button"
android:paddingBottom="20dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="20dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingBottom="20dp">
<ImageView
android:id="@+id/logo_iucn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_cr" />
<TextView
android:id="@+id/code_text"
style="@style/ParagraphCenter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:text="" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<ImageButton
android:id="@+id/picto_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:clickable="true"
android:src="@drawable/ic_infobulle" />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/share_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:src="@drawable/ic_share_species" />
<!--<Button
android:id="@+id/shar_fb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/share_button"
android:text="share" />-->
</RelativeLayout>
<TextView
android:id="@+id/name"
style="@style/TitleLeft"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-20dp"
android:text="" />
<TextView
android:id="@+id/latin_name"
style="@style/TitleLeft"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:text=""
android:textStyle="italic" />
<TextView
android:id="@+id/type"
style="@style/details"
android:text="" />
<TextView
android:id="@+id/continent"
style="@style/details"
android:layout_width="wrap_content"
android:text="" />
<TextView
android:id="@+id/family"
style="@style/details"
android:text=" " />
<TextView
android:id="@+id/features"
style="@style/details"
android:text="" />
<TextView
android:id="@+id/size"
style="@style/details"
android:text="" />
<LinearLayout
android:id="@+id/section_desc"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<View
style="@style/view_style"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp" />
<!--<TextView
style="@style/TitleLeft"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/description" />-->
<TextView
android:id="@+id/desc"
style="@style/details"
android:text="" />
</LinearLayout>
<LinearLayout
android:id="@+id/section_alert"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<View
style="@style/view_style"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp" />
<TextView
style="@style/TitleLeft"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/alert" />
<TextView
android:id="@+id/alert"
style="@style/details"
android:text="" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
答案 0 :(得分:0)
首先应用像这样的监听器
,然后在工具栏中对菜单进行充气 Toolbar toolbar = (Toolbar) v.findViewById(R.id.toolbar);
toolbar.inflateMenu(R.menu.details);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_share:
//do some here
Log.d("debug","action share has clicked");
return true;
}
return false;
}
});
toolbarTitle = (TextView) toolbar.findViewById(R.id.toolbar_title);
toolbarTitle.setText(R.string.learn);
答案 1 :(得分:0)
请确保在您的布局(设计模式)中将项目放置在正确的位置。有时您会使两个元素彼此靠近但实际上它们是叠加的。
答案 2 :(得分:0)
问题在于LinearLayout。我从中排除了AppBarLayout,然后将其放在上面。当它在LinearLayout中时,Scrollview被放置在项目上方,因此它的大部分被隐藏,除了它的右侧(点击工作的地方)。在没有滚动的情况下我无法看到它..现在滚动时Scrollview会在工具栏下面传递并且项目点击工作正常。
我的布局现在看起来像这样:
<android.support.design.widget.AppBarLayout
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimaryDark"
app:popupTheme="@style/AppTheme.PopupOverlay">
<TextView
android:id="@+id/toolbar_title"
style="@style/pages_titles"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar_layout"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="@color/mr_white"
android:gravity="center">
<ImageView
android:id="@+id/fish_photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="7dp" />
<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:indeterminate="true"
android:indeterminateTint="@color/colorPrimary"
android:indeterminateTintMode="src_atop" />
</RelativeLayout>
</LinearLayout>