1

我有一个列表视图。列表视图中的每个项目都是自定义的。每个项目都有

文本视图1

文本视图 2 按钮 1

文本视图1

文本视图 2 按钮 1

文本视图1

文本视图 2 按钮 1

点击项目按钮获得焦点。即使我在每个列表视图项的布局中给出了按钮的以下属性,我也不想获得按钮的焦点 android:focusable="false" android:focusableInTouchMode="false" 任何人请帮我解决这个问题

4

4 回答 4

0

在几天之前,我遇到了同样的问题。但现在我已经解决了。

喜欢跟随。

制作一个名为DontPressWithParentButton的类,它扩展了 Button,如下所示:

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;

public class DontPressWithParentButton extends Button {

    public DontPressWithParentButton(Context context) {
        super(context);
    }

    public DontPressWithParentButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public DontPressWithParentButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public void setPressed(boolean pressed) {
        if (pressed && getParent() instanceof View && ((View) getParent()).isPressed()) {
            return;
        }
        super.setPressed(pressed);
    }

}

现在,在您的项目行 xml 中,如下定义按钮(添加您的包代替 YOUR_APP_PACKAGE)

<YOUR_APP_PACKAGE.DontPressWithParentButton android:id="@+id/deleteBtn" android:layout_width="100dp"
            android:layout_height="wrap_content" android:layout_alignParentRight="true"
            android:textColor="#FFFFFF"
            android:text="Approve"
            android:focusable="false"
            android:focusableInTouchMode="false"
            />

现在在您的 java 文件中引用 id,如下所示:

DontPressWithParentButton deleteGameBtn=(DontPressWithParentButton) findViewById(R.id.deleteGameBtn);

现在运行项目。你会得到你想要的。

如果您有任何疑问,请评论我。

于 2012-10-11T09:52:13.207 回答
0

尝试这个:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:focusable="false"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content">

</LinearLayout>

在整个布局上只是 Focuable false。

于 2012-07-05T06:55:54.507 回答
0
public class DontPressWithParentButton extends Button {

public DontPressWithParentButton(Context context) {
    super(context);
}

public DontPressWithParentButton(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public DontPressWithParentButton(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

@Override
public void setPressed(boolean pressed) {
    if (pressed && getParent() instanceof View && ((View) getParent()).isPressed()) {
        return;
    }
    super.setPressed(pressed);
}
}

在布局文件中添加以下元素

<DontPressWithParentButton />

希望这可以正常工作,没有任何缺陷

于 2012-07-06T05:49:17.140 回答
0

添加android:descendantFocusability="blocksDescendants"以便可以阻止子 View(row )。

<ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:descendantFocusability="blocksDescendants" />

如果你想要虎钳而不是添加focusable and focusableInTouchMode to falseimageButton/Buttonitem.xml

于 2015-01-14T21:28:07.267 回答