工具栏中 ImageView 上的 OnClickListener 不起作用
OnClick Listener on ImageView on Toolbar not working
我试图在片段的开头显示操作栏,但在执行某些操作后,我使用 ((AppCompatActivity) getActivity()).getSupportActionBar().hide();
隐藏了 操作栏,然后使用 toolbar.setVisibility(View.VISIBLE);
除了 toolbar 上的图像 OnClick Listener 外,其他一切正常。我的代码
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary">
<ImageView
android:id="@+id/back"
android:layout_width="wrap_content"
android:clickable="true"
android:layout_height="wrap_content"
android:src="@drawable/action_bar_home_button"/>
</android.support.v7.widget.Toolbar>
在我的 xml 中,随后在 java ->
actionBar =((AppCompatActivity) getActivity()).getSupportActionBar();
toolbar = (Toolbar)rootView.findViewById(R.id.toolbar);
activity = (AppCompatActivity) getActivity();
toolbar.setVisibility(View.GONE);
back = (ImageView) toolbar.findViewById(R.id.back);
back.setOnClickListener(this);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toolbar.setVisibility(View.GONE);
Logger.i("onBack");
}
});
使Action Bar隐藏和工具栏可见的功能->
public void readFilterRealm(Boolean isShortcut) {
((AppCompatActivity) getActivity()).getSupportActionBar().hide();
activity.getSupportActionBar().hide();
actionBar.hide();
toolbar.setVisibility(View.VISIBLE);}
没有正在打印的日志。
但是当我试图添加
activity.setSupportActionBar(toolbar);
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
我遇到了致命的崩溃
This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
我需要工具栏和操作栏,所以我不能删除任何一个。提前感谢所有帮助(:
试试这个代码片段:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment, container, false);
Toolbar toolbar = (Toolbar) rootView.findViewById(R.id.toolbar);
AppCompatActivity activity = (AppCompatActivity) getActivity();
activity.setSupportActionBar(toolbar);
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ImageView imageButton = (ImageView) toolbar.findViewById(R.id.back);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_SHORT).show();
}
});
}
编辑
设置工具栏需要添加:
清单中:
<activity android:name=".YourActivity"
android:theme="@style/AppTheme.NoActionBar"><!-- ADD THIS LINE -->
在 res/values/styles.xml:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
我遇到了同样的问题。我无法使用我的 java 文件来做到这一点,所以我所做的是在我写的 xml 文件中 android:onclick="trigger"
然后在 java 文件中,我创建了一个名为 trigger
:
的方法
void trigger(View view){
//code
}
这对我有用。
我试图在片段的开头显示操作栏,但在执行某些操作后,我使用 ((AppCompatActivity) getActivity()).getSupportActionBar().hide();
隐藏了 操作栏,然后使用 toolbar.setVisibility(View.VISIBLE);
除了 toolbar 上的图像 OnClick Listener 外,其他一切正常。我的代码
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary">
<ImageView
android:id="@+id/back"
android:layout_width="wrap_content"
android:clickable="true"
android:layout_height="wrap_content"
android:src="@drawable/action_bar_home_button"/>
</android.support.v7.widget.Toolbar>
在我的 xml 中,随后在 java ->
actionBar =((AppCompatActivity) getActivity()).getSupportActionBar();
toolbar = (Toolbar)rootView.findViewById(R.id.toolbar);
activity = (AppCompatActivity) getActivity();
toolbar.setVisibility(View.GONE);
back = (ImageView) toolbar.findViewById(R.id.back);
back.setOnClickListener(this);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toolbar.setVisibility(View.GONE);
Logger.i("onBack");
}
});
使Action Bar隐藏和工具栏可见的功能->
public void readFilterRealm(Boolean isShortcut) {
((AppCompatActivity) getActivity()).getSupportActionBar().hide();
activity.getSupportActionBar().hide();
actionBar.hide();
toolbar.setVisibility(View.VISIBLE);}
没有正在打印的日志。
但是当我试图添加
activity.setSupportActionBar(toolbar);
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
我遇到了致命的崩溃
This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
我需要工具栏和操作栏,所以我不能删除任何一个。提前感谢所有帮助(:
试试这个代码片段:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment, container, false);
Toolbar toolbar = (Toolbar) rootView.findViewById(R.id.toolbar);
AppCompatActivity activity = (AppCompatActivity) getActivity();
activity.setSupportActionBar(toolbar);
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ImageView imageButton = (ImageView) toolbar.findViewById(R.id.back);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_SHORT).show();
}
});
}
编辑
设置工具栏需要添加:
清单中:
<activity android:name=".YourActivity"
android:theme="@style/AppTheme.NoActionBar"><!-- ADD THIS LINE -->
在 res/values/styles.xml:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
我遇到了同样的问题。我无法使用我的 java 文件来做到这一点,所以我所做的是在我写的 xml 文件中 android:onclick="trigger"
然后在 java 文件中,我创建了一个名为 trigger
:
void trigger(View view){
//code
}
这对我有用。