写毕设时想模仿网易严选的SearchView点击事件:首页点击后跳转到另一个Activity进行搜索,中间使用共享元素动画(严选的首页可能不是SearchView)
但是发现无论给SearchView设置OnClickListener还是OnTouchListener都无效,甚至把SearchView的源码复制过来改但是都没奏效。
最后用了一个骚办法:加一层View,设置View的点击事件。其实第一个页面跳转
<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.SearchView android:focusable="false" android:id="@+id/searchview_home" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="10dp" app:iconifiedByDefault="false" app:queryHint="搜索好物" /> <View android:onClick="@{fragment.startSearchArtworkActivity}" android:layout_width="match_parent" android:layout_height="match_parent"/> </FrameLayout>
public void startSearchArtworkActivity(View view){ Intent intent = new Intent(getActivity(), SearchArtworkActivity.class); ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(), new Pair<View, String>(binding.searchviewHome, getString(R.string.transition_shared_pic))); // 这里指定了共享的视图元素 ActivityCompat.startActivity(getActivity(), intent, options.toBundle()); }