これは私を混乱させています:
私が読んだ限りでは、setVisibility(View.GONE)を持つビューです。タッチまたはクリックイベントをこれ以上受信しないでください。レイアウトには2つの部分があり、それらは一度に表示または使用できるように表示または削除されますが、View.GONEはそのトリックを行いません。予想どおり、GONEビューは表示されませんが、onClickに反応します(他のビューが取得するイベントを消費します)。
手伝って頂けますか?
興味深いかもしれません:プロジェクトを開始すると、一方のビューはGONE、もう一方は表示されます。今回は期待どおりに動作します(GONEビューは基本的に無視されます)が、コードでView.GONEを設定すると、動作を停止します。
アニメーションを使用してビューを表示/非表示にしますか? Android:fillEnabled = "true" Android:fillAfter = "true"のアニメーションを使用すると、この動作が発生します。理解できないため、バグのようです。fillEnabled/ fillAfterなしでアニメーションを使用すると、すべて正常に動作します。 ..
アニメーションの後にsetVisibility(View.GONE)
を設定した場合(フェードアウトなど)、clearAnimation()
を使用してアニメーションをクリアしてみてください。これは私を助けたものです。
SetVisibility(View.GONE)の後にsetClickable(false)を使用してclickableプロパティをfalseに設定してみてください
はい、mview.clearAnimation()
にはいくつかの問題がありますが、amination.setFillAfter(false);
とmview.setClickable(false);
は完璧です。
私が期待しているのは、ビューを非表示にしますが、ビューの子はまだクリックに応答するということです(つまり、ビューはViewGroupです)。次の行に沿って何かを行うことができます。
private void hideTheChildren(View v){
if(v instanceof ViewGroup) {
int count = ((ViewGroup)v).getChildCount();
for(int k = 0 ; k < count ; k++) {
hideTheChildren(((ViewGroup)v).getChildAt(k));
}
v.setVisibility(View.GONE);
}
else {
v.setClickable(false);
v.setVisibility(View.GONE);
}
}
もちろん、反対もする必要があります
private void showTheChildren(View v){
if(v instanceof ViewGroup) {
int count = ((ViewGroup)v).getChildCount();
for(int k = 0 ; k < count ; k++) {
showTheChildren(((ViewGroup)v).getChildAt(k));
}
v.setVisibility(View.VISIBLE);
}
else {
v.setClickable(true);
v.setVisibility(View.VISIBLE);
}
}
これは過去に私のために働いた。私は現在、これを行うためのより良い方法を知りません。
上記の回答を行っても問題が解決しない場合は、親ビューからビューを削除することをお勧めします。ビューを再度表示する必要がある場合は、コピーを作成して親ビューに追加するだけです。
これはやり過ぎに見えるかもしれませんが、ボタン、テキストビュー、または画像の場合、ビューグループ全体を非表示/表示していましたが、このソリューションは引き続き機能します。
これをコメントとして投稿することもありましたが、残念ながらコメントを投稿できませんでした。それはあなたのための可能な解決策になる可能性があるので、私はそれをそのように投稿します:
「onClick」を書くとき、XMLレイアウトでonClick
属性を使用していると思います。 OnClickListener
属性の代わりにsetOnClickListener
でonClick
を設定してください。たぶんこれが役立ちます...
ビューにアニメーションがある場合は、view.clearAnimationを呼び出す必要があります。
onAnimationEndオーバーライドに.clearAnimation()を追加してみてください。