Astar75 Asked:2020-02-02 05:48:58 +0800 CST2020-02-02 05:48:58 +0800 CST 2020-02-02 05:48:58 +0800 CST 按钮图标 + 文字 772 你能告诉我如何实现这种类型的按钮吗? 我尝试使用 button 属性drawableTop="_image_resource_",但没有帮助。图像刚刚弹出,但文本仍位于中心。如何使按钮与里面的图像一起缩放? java 2 个回答 Voted Best Answer Shwarz Andrei 2020-02-02T15:20:47+08:002020-02-02T15:20:47+08:00 按钮布局: <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="96dp" android:layout_height="128dp" android:background="@drawable/lock_button" android:clickable="true" android:focusable="true"> <ImageView android:id="@+id/imageView" android:layout_width="48dp" android:layout_height="48dp" android:contentDescription="@null" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.35" app:srcCompat="@drawable/ic_lock_black_24dp" /> <TextView android:textColor="#000" android:id="@+id/textView" android:layout_width="48dp" android:layout_height="24dp" android:ellipsize="end" android:gravity="center" android:maxLines="1" android:text="LOCK" android:textSize="14dp" android:textStyle="bold" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/imageView" tools:ignore="SpUsage" /> </androidx.constraintlayout.widget.ConstraintLayout> 选择器@drawable/lock_button: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@android:drawable/btn_default" /> <item android:state_window_focused="false" android:state_enabled="false" android:drawable="@android:drawable/btn_default" /> <item android:state_pressed="true" android:drawable="@android:drawable/btn_default" /> <item android:drawable="@drawable/lock_button_frame" /> </selector> @drawable/lock_button_frame <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="2dp" android:color="#000" /> </shape> Style-7 2020-02-02T15:08:44+08:002020-02-02T15:08:44+08:00 基于ImageSpan为您制作。注意属性“android:textAllCaps” <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|top" android:id="@+id/button" android:textAllCaps="false" /> Button button = (Button) findViewById(R.id.button); SpannableString string = new SpannableString("Lock\n "); string.setSpan( new ImageSpan(this, R.mipmap.ic_launcher, DynamicDrawableSpan.ALIGN_BASELINE), 5, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); button.setText(string);
按钮布局:
选择器@drawable/lock_button:
@drawable/lock_button_frame
基于ImageSpan为您制作。注意属性“android:textAllCaps”