android:background="@drawable/weixin_1" 會將圖片拉伸填滿整個 Button,無法保持原比例或指定大小置中。
// Activity/Fragment
LinearLayout btnWeixin = findViewById(R.id.btnWeixin);
btnWeixin.setOnClickListener(v -> {
// 處理點擊邏輯
});
ImageView 的 layout_width/height 決定顯示尺寸,scaleType 控制縮放模式。LinearLayout 設 40dp,內層圖標 30dp,符合 Material Design 48dp 最小觸控目標建議。?attr/selectableItemBackgroundBorderless 提供原生點擊視覺回饋。contentDescription 供 TalkBack 讀取。| 方案 | 優點 | 缺點 |
|---|---|---|
| Button + drawableLeft/Top/Right/Bottom | 純 XML、自帶文字 | 圖片大小受 drawablePadding、textSize 影響,難精確控制 |
| ImageButton | 專為圖片按鈕設計 | scaleType 支援有限、背景與圖標混淆 |
| 自訂 View 覆寫 onDraw | 完全控制 | 開發成本高、易出 Bug |