6

次のように、ImageButton と TextView を LinearLayout でラップしています。

    <LinearLayout android:orientation="vertical"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_weight="20" android:gravity="center"
        android:clickable="true" android:id="@+id/action_showhide">
        <ImageButton android:id="@+id/test"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:src="@drawable/ic_toggle_hide_states" android:background="@null"></ImageButton>
        <TextView android:id="@+id/TextView01" android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:text="@string/txtHide"
            android:textColor="@drawable/orange" android:textStyle="bold"></TextView>
    </LinearLayout>

ImageButton は、通常の状態、フォーカスされた状態、および押された状態のカスタム ドローアブルによって支えられています。ユーザーが LinearLayout の任意の場所をクリックして OnClick イベントを発生できるようにしたいと考えています。以下のコードは、OnClickListener のセットアップを示しています。

    final LinearLayout actionHide = (LinearLayout) findViewById(R.id.action_showhide);
    actionHide.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d(AppAdvocate.TAG, "Event caught");
        }
    });

コードは、ユーザーが TextView の任意の場所をクリックすると機能しますが、ユーザーが ImageButton をクリックすると、イベントは LinearLayout までバブルアップしません。ボタンの onClickListener を定義していません。ImageButton のドローアブルを変更したいので、clickable=false に設定したくありません。イベントを盛り上げる方法はありますか?

4

4 に答える 4

4

クリック可能にするには、すべての子要素LinearLayoutを設定する必要があります。android:focusable="false"

于 2013-01-29T19:29:59.420 に答える
0

ImageButton に android::clickable="false" を設定します。これは役立つはずです。

于 2014-09-19T06:23:45.417 に答える
0

ボタンをクリックできないようにしたくない場合は、ボタンにリスナーを追加して、LinearLayout onClick と同じアクションを実行するだけです。ユーザーには 1 つの大きなボタンのように見えます。

于 2010-08-25T22:13:09.457 に答える
0

私が理解していることから、次のものが必要になります。

    <LinearLayout android:orientation="vertical"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_weight="20" android:gravity="center"
        android:clickable="true" android:id="@+id/action_showhide">
        <ImageButton android:id="@+id/test"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:src="@drawable/ic_toggle_hide_states" android:background="@null">         </ImageButton>
        <TextView android:id="@+id/TextView01" android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:text="@string/txtHide"
            android:textColor="@drawable/orange" android:textStyle="bold"
android:onClick="viewClicked"></TextView>
    </LinearLayout>

その後、関数を作成します。

public void viewClicked(View v){

    switch (v.getId())
    {
        case R.id.action_showhide:
            //do something
            break;
        case R.id.action_showhide:
            //do something
            break;
    }

}
于 2013-05-13T09:10:23.060 に答える