小编Iva*_*ork的帖子

RecyclerView中的滑动和OnClick事件

我正在尝试实现一个轻扫以解除RecyclerView中的操作,但是当我在ViewHolder中的任何View上设置OnClickListener时,它会覆盖该视图上的所有OnTouch事件.

我可以放弃OnClickListener并处理TouchListener中的所有点击,但如果我在RecycleView的子视图中有多个按钮,那将是很多代码,这看起来不是正确的方法.

在我的RecyleView中我设置了Swipe以解除侦听器(类似于此):

    setOnTouchListener(touchListener);
    setOnScrollListener(touchListener.makeScrollListener());
Run Code Online (Sandbox Code Playgroud)

它在ListView中工作,但在RecycleView中,OnClickListener阻止OnTouchListner事件.

ViewHolder视图的布局示例.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="72dp"
android:descendantFocusability="blocksDescendants">

<ImageView
    android:id="@+id/keep_icon"
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:layout_centerInParent="true"
    android:src="@drawable/ic_received" />
Run Code Online (Sandbox Code Playgroud)

在RecyclerView.Adapter中充气:

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View v = mInflater.inflate(R.layout.push_card_view_compat, viewGroup, false);
    return new ViewHolder(v, onClickListener, onKeepListener);
}
Run Code Online (Sandbox Code Playgroud)

ViewHolder:

public ViewHolder(final View itemView,
                  final OnViewHolderClickListener onClickListener,
                  final OnKeepListener onKeepListener) {
    super(itemView);
    keepButton = (ImageView) itemView.findViewById(R.id.keep_icon);

    itemView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        onItemClickListener.onClick(getPosition(), itemView);
    }
    });
    keepButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

android swipe ontouchlistener android-recyclerview

20
推荐指数
1
解决办法
2万
查看次数

Android模拟器上的自定义屏幕密度

我想为我的模拟器设置自定义屏幕密度.

我打开AVD经理.

右键单击虚拟设备.

在磁盘上显示.

打开config.ini

设置"hw.lcd.density = 200"

当我启动模拟器时它显示错误:qemu:可用的lcd密度是:120,160,213,240,280,320,360,400,420,480,560,640

是否可以为仿真器使用自定义密度?我可以在真实设备上或genymotion上进行吗?

android emulation android-virtual-device genymotion

7
推荐指数
1
解决办法
1273
查看次数

以编程方式动画ActionBarDrawerToggle图标

我想手动将抽屉图标从汉堡设置为箭头,反之亦然,不仅在拖动抽屉时,是否可能?我正在使用支持库appcompat-v7:21.

另外我找不到android.support.v7.app.ActionBarDrawerToggle的源代码,这会有所帮助.

android android-appcompat android-actionbar android-5.0-lollipop

5
推荐指数
1
解决办法
4619
查看次数