6

私は持っていToggleButtonます。このボタンをクリックする場所を増やしたいです。などを追加するlayout_widthlayout_height、画像が悪く見えます。私も使用してみandroid:paddingましたが、役に立ちませんでした。

ユーザーの利便性のために必要です。

ここに画像の説明を入力

4

6 に答える 6

3

簡単な解決策:ボタンの画像がある場合は、その周りに透明な領域を作成します(つまり、タッチ領域用)。

灰色の領域を透明にして、タッチ領域を増やすことができます。

ここに画像の説明を入力

またはTouchDelegateを使用します

于 2012-10-17T10:56:22.937 に答える
3

Android デベロッパー トレーニングのブログ投稿を設定して、タッチ エリアを増やすこともできますtouch delegates

public class MainActivity extends Activity {

    @Override 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Get the parent view 
        View parentView = findViewById(R.id.parent_layout);

        parentView.post(new Runnable() {
            // Post in the parent's message queue to make sure the parent 
            // lays out its children before you call getHitRect() 
            @Override 
            public void run() { 
                // The bounds for the delegate view (an ImageButton 
                // in this example) 
                Rect delegateArea = new Rect();
                ImageButton myButton = (ImageButton) findViewById(R.id.button);
                myButton.setEnabled(true);
                myButton.setOnClickListener(new View.OnClickListener() {
                    @Override 
                    public void onClick(View view) {
                        Toast.makeText(MainActivity.this, 
                                "Touch occurred within ImageButton touch region.",  
                                Toast.LENGTH_SHORT).show();
                    } 
                }); 

                // The hit rectangle for the ImageButton 
                myButton.getHitRect(delegateArea);

                // Extend the touch area of the ImageButton beyond its bounds 
                // on the right and bottom. 
                delegateArea.right += 100;
                delegateArea.bottom += 100;

                // Instantiate a TouchDelegate. 
                // "delegateArea" is the bounds in local coordinates of  
                // the containing view to be mapped to the delegate view. 
                // "myButton" is the child view that should receive motion 
                // events. 
                TouchDelegate touchDelegate = new TouchDelegate(delegateArea, 
                        myButton);

                // Sets the TouchDelegate on the parent view, such that touches  
                // within the touch delegate bounds are routed to the child. 
                if (View.class.isInstance(myButton.getParent())) {
                    ((View) myButton.getParent()).setTouchDelegate(touchDelegate);
                } 
            } 
        }); 
    } 
} 
于 2015-02-26T06:43:41.770 に答える
3

ammar26がTouchDelegateあなたにコメントしたので、あなたのために使用してください。ToggleButton

または

これを試して:

LinearLayoutまたはのような 1 つの親レイアウトを作成RelativeLayoutToggleButtonます。そして、その親レイアウトにマージンを入れます。

ここで、その親レイアウトをクリックすると、トグル ボタンのアクションが実行されます。

ビューのタッチ領域を増やすのに役立つことを願っています。

ハッピーコーディング。

于 2012-10-17T09:28:55.833 に答える
2

タッチイベントをボタンに入れる代わりに、ボタンだけを含むレイアウトに入れて、必要に応じてレイアウトのサイズを修正します

于 2012-10-17T09:16:26.640 に答える
2

の値を増やしますandroid:padding:

<SeekBar android:id="@+id/seek" android:layout_width="0dip"
android:layout_height="wrap_content" android:layout_weight="1" 
android:paddingTop="5dp" android:paddingBottom="5dp"
android:progressDrawable="@drawable/green_scrubber_progress_horizontal_holo_ligh‌​t"
android:thumb="@drawable/thumb" />
于 2014-05-28T09:04:33.433 に答える
0

そのからあなたのmargin(の場所)を取り、あなたの操作を実行しますpaddingButtonparent layoutLayout

mLayout.setonTouchListener(View.onTouchListener{
     // here your working code 
});
于 2012-10-17T07:31:42.923 に答える