2016-05-30 1425 views

回答

1

如果你對默認材質按鈕很好,只需使用它即可。對大多數事情都沒問題。對於按鍵材質的主題被定義爲:

<!-- 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> 

正如你可以看到了minHeight屬性設置爲48dp,這意味着此按鈕將至少48dp高。有什麼不好的地方在於Button的背景有插圖,這意味着附加的觸摸區域是通過在按鈕周圍有一些透明的像素來實現的。它使按鈕真的很難正確地佈局,如下面的SO職位:

How to align Material buttons with other UI elements

這樣的小部件設計確實限制了佈局構建選項。指南將觸摸目標描述爲應該影響小部件的外部附加觸摸區域。它應該做的事是這樣的:

  • 覆蓋默認的背景與2DP半徑的圓矩形形狀
  • 設置了minHeight到36dp
  • 使用setTouchDelegate改變觸摸目標
  • 或覆蓋getHitRect改變觸摸目標

參見:

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,並使用我提到的兩種方法之一來擴展觸摸矩形。 – Zielony

+0

我在哪裏可以找到可繪製的「@ drawable/btn_default_material」? –

1

材料設計是一個設計規範,因此,談論了很多關於「什麼」,而不是很多關於「如何」。觸摸目標大小基於多年來發現的小部件應該是的最小大小,以便於一般人的手指輕鬆地進行交互。如果你堅持Google定義的主題和樣式(例如AppCompat主題),你應該沒問題。如果您使用的是完全自定義的主題(我個人建議您不要這樣做),那麼您必須使用48dp的minWidth和/或minHeight來設置樣式。