LienarLayout
にはButton
があります。私はButton
とLinearLayout
の両方にOnClickListener
を持っています。ある時点で、Button
を無効にして、onClick
イベントを親のLinearLayout
に渡したいと思います。 Button.setClickable(flase)
を設定してこれを達成したことがわかりました。どちらが動作し、LinearLayout
がクリックを取得しますが、Button
のクリックアニメーションは引き続き再生されます。さらに悪いことに、Button
が描かれていないLinearLayout
をクリックすると、ボタンのクリックアニメーションが再生されます。ボタンをクリックしてアニメーションを無効にするEnEable(false)
私が欲しいものをどのように達成できるか知っていれば、私はそれを高く評価します。
P .:私がButton.setEnabled(false)
を使用したくない理由は、ボタンを無効にしたくないためです。オンデマンドでボタンのクリック可能な状態を有効/無効にすることもできます。ですから、基本的にはボタンがアクティブになるようにし、クリックがLinearLayoutに渡されるようにします。
コード - XML:
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/selectableItemBackground">
<Button
android:id="@+id/button"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="button"/>
</LinearLayout>
コード - Javaの:クリックする前に
Button btn = (Button) view.findViewById(R.id.button);
btn.setClickable(false);
クリックを達成したくない場合は 'button.setOnClickListener(null)'を使用し、将来必要に応じてリスナーを設定することができます。 –
いくつかの回避策を提案できます:1)クリックの代わりにタッチリスナーを使用する。 2)ボタンに静的な画像の背景を設定します(状態描画可能ではありません)。3)クリック可能なビューをボタンの上に置くと、すべてのクリックを捕捉します。 –