2016-05-30 8 views

答えて

1

デフォルトのマテリアルボタンが問題ない場合は、そのまま使用してください。ほとんどのものは大丈夫です。このボタンは、少なくとも48dp長身になることを意味し、minHeightの属性が48dpに設定されて見ることができるように

<!-- Bordered ink button --> 
<style name="Widget.Material.Button"> 
    <item name="background">@drawable/btn_default_material</item> 
    <item name="textAppearance">?attr/textAppearanceButton</item> 
    <item name="minHeight">48dip</item> 
    <item name="minWidth">88dip</item> 
    <item name="stateListAnimator">@anim/button_state_list_anim_material</item> 
    <item name="focusable">true</item> 
    <item name="clickable">true</item> 
    <item name="gravity">center_vertical|center_horizontal</item> 
</style> 

:Buttonの材料テーマは以下のように定義されます。悪い点は、Buttonの背景にはインセットがあることです。つまり、ボタンの周りに透明なピクセルを置くことによって、追加のタッチ領域が実現されます。これは、次のSOポストのように、適切なレイアウトに本当にハードボタンを作る:

How to align Material buttons with other UI elements

このようなウィジェットのデザインは実際にレイアウト建物のオプションを制限します。このガイドラインでは、ウィジェットに影響を及ぼす外部の追加タッチ領域としてのタッチターゲットについて説明しています。それは次のように行われるべきである:

  • タッチターゲットを変更したり、タッチを変更するにはgetHitRectを上書きする
  • 使用setTouchDelegateを36dpする2DP半径の丸い矩形形状
  • セットminHeightの持つデフォルトの背景を上書きターゲット

参照:

https://developer.android.com/reference/android/view/TouchDelegate.html

https://developer.android.com/reference/android/view/View.html#getHitRect(android.graphics.Rect)

+0

ありがとうございました。つまり、minHeightを48dipに設定すると、「タッチターゲットサイズ」の要件が達成されるか、インポートされたスタイル「Widget.Material.Button」によって作成されます。これは私が好きなことです。カスタムボタンを、いわゆる「タッチターゲットサイズ」の素材ボタンと似たものにするガイドラインがないのは不思議です。 –

+0

minHeightを48dpに設定すると、タッチ矩形と描画矩形の両方が48dpに設定され、それが「Widget.Material.Button」と同じです。シェイプインセットを使用して、そのサイズから描画矩形を切り取ります。私はむしろminHeightを36dpに設定し、私が言及した2つの方法の1つを使用してタッチ矩形を拡張します。 – Zielony

+0

ドロアブル "@ drawable/btn_default_material"はどこにありますか? –

1

マテリアルデザインはデザイン仕様であり、そのように、「どのように」について多くのことを語り、「方法」についてはあまり言及していません。タッチ対象のサイズは、ウィジェットが平均的な人の指によって容易に対話されるためには、長年にわたり発見されたものに基づいています。 Google(AppCompatテーマなど)で定義されたテーマやスタイルに固執すると、うまくいくはずです。完全にカスタムのテーマを使用している場合(個人的にはそうしないことをお勧めします)、minWidthおよび/またはminHeightの48dpでウィジェットのスタイルを設定する必要があります。

関連する問題