有没有办法将custom_view.xml
放在Button
而不是标题中?我希望我的按钮的标题有两个不同的字符串,都使用不同的字体。我认为唯一的方法是在我的按钮内部有一个自定义视图?
修改
当我点击按钮时,我需要从Button
组件派生以产生连锁效果。我不想将FrameLayout
与触摸侦听器一起使用。
编辑2
是否有办法获得按钮的阴影/边框效果?我非常想让它看起来/感觉像一个自然的Android按钮,点击时具有相同的外观/感觉,但内部有自定义视图。
答案 0 :(得分:3)
您可以采用按钮的样式并将其应用于任何ViewGroup。这样可以处理大多数属性(填充,minHeight,背景绘制,波纹绘制,按下时的高度等)。
例如,制作一个带图标的简单彩色按钮(TextView的样式也改为与按钮样式相匹配):
<LinearLayout
android:id="@+id/buttonViewGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
style="@style/Widget.AppCompat.Button.Colored">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_icon_test"/>
<TextView
style="@style/TextAppearance.AppCompat.Widget.Button.Colored"
android:text="Hallo world!"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
然后你可以自由地将任何OnClickListener设置为LinearLayout并设置。
答案 1 :(得分:0)
为什么不使用常规的线性/帧/相对布局并将其设计为按钮?您可以根据需要添加任意数量的视图。正如其他人所提到的那样,添加涟漪效应也是可能的。希望这会有所帮助。
答案 2 :(得分:0)
方法1:
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:text="Click Me" />
方法2:
您必须在drawable资源目录中创建一个xml文件。创建ripple_effect.xml文件并添加以下代码。
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="#f816a463"
tools:targetApi="lollipop">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#f816a463" />
</shape>
</item>
</ripple>
然后为按钮添加背景
<Button
android:background="@drawable/ripple_effect"
android:padding="16dp"
android:text="Click Me" />