2012-05-01 4 views
10

アイコンを表す画面に小さなAndroid ImageButtonがあります。問題は触れることが難しく、活性化することです。画像自体のサイズを大きくしたくないのですが、クリック可能な領域を拡大して拡大したいので、ユーザーが画像の近くにいるとonClickイベントが有効になります。周囲の画面領域にonTouchイベントを実装せずにこれを行うにはどうすればいいですか?Android ImageButtonクリック可能な領域をイメージ自体よりも大きくするにはどうすればいいですか?

答えて

16

あなたのは、別のViewGroupにあなたのラップを置き、ViewGroupにパディングを設定することができます。その後、ViewGroupのクリックをリスンします。

<FrameLayout 
    android:id="@+id/button_layout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="20dp" > 

    <ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/my_button" 
     android:duplicateParentState="true" 
     android:clickable="false" 
     android:focusable="false" /> 

</FrameLayout> 

あなたはその後、R.id.button_layoutのクリックをリッスンだろう、とあなたImageButtonは親のレイアウトとして(押され、クリックされた、など)すべて同じ状態を受ける必要があります。次に例を示します。

+0

20-50ディップの左にパディングを追加しようとしましたが、これはうまくいかないようです。 –

+0

paddingRight、paddingLeftなどではなく、単にpadding = "20dip"にするという考えですか? –

+0

これはうまくいけば、おそらく最速のテクニックですが、まだ検証できませんでした。 –

0

私は、相対レイアウトを使用してアイコンを配置した後、通常の状態では完全に透明なドロアブルを使用し、その上に直接大きなボタンを配置し、半透明の色を追加しますプレス/フォーカス/等のために。

+0

どのように半透明色を指定しますか? –

+0

私はアイコンを描きました(普通の状態は色もアルファもない空白の四角形です)、drawable xmlを通してすべて参照され、ボタンdrawableをxmlに設定しました。私はボタンをイメージよりも大きくするためにこれをしただけでなく、電話アイコンに静的なシステムイメージを使用して、個々のデバイスごとに物事を均一に保つことができました –

+0

ここをクリックしてください:http://developer.android.com /resources/tutorials/views/hello-formstuff.html –

0

レイアウトがどのように設定されているのかわかりませんが、実際のところ、相対レイアウトを使用することです。大きな透明な背景でアイコンを作成します。正しく配置するにはレイアウトを手間取る必要がありますが、透明領域もクリック可能になります。

関連する問題