一番左の位置に内側ImageView
があります。これにはすべての状態 (押された、選択された、フォーカスされた、通常)があります。だから私はこれを避ける方法を知りたいです。listview
imageView
listView
ListView
ImageView
ImageView
2 に答える
1
この問題を解決する手順は次のとおりです。NoParentPressImageView
次のコードで呼び出されるクラスを作成します。
public class NoParentPressImageView extends ImageView {
public NoParentPressImageView(Context context) {
this(context, null);
this.setFocusable(false);
}
public NoParentPressImageView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setFocusable(false);
}
@Override
public void setPressed(boolean pressed) {
// If the parent is pressed, do not set to pressed.
if (pressed && ((View) getParent()).isPressed()) {
return;
}
super.setPressed(pressed);
}
}
コンストラクター内の は、レイアウト ドキュメントに追加するsetFocusable(false)
のと同じ効果があることに注意してください。これにより、行をクリックできるようになります。override メソッドは、ここで言及した問題を解決します。つまり、(親) のプレス イベントが(子)に波及します。android:focusable="false"
xml
ListView
onPressed
ListView
ImageView
このクラスを定義ImageView
したら、xml
レイアウトを に置き換えることができますcom.MYCOMPANY.MYAPP.NoParentPressImageView
。コンパイルして実行すると、ListView
期待どおりに動作するはずです。ImageView
押されたイベントは、行の他の場所をクリックしたときではなく、実際に画像をクリックしたときにのみトリガーされます。
于 2013-02-26T18:30:22.827 に答える
-1
レイアウト ファイルにを追加android:focusable="false"
してみてください。ImageView
于 2013-02-14T07:19:28.423 に答える