一番左の位置に内側ImageViewがあります。これにはすべての状態 (押された、選択された、フォーカスされた、通常)があります。だから私はこれを避ける方法を知りたいです。listviewimageViewlistViewListViewImageViewImageView
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"xmlListViewonPressedListViewImageView
このクラスを定義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 に答える