Android风格的视图就像一个彩色的按钮

时间:2016-03-01 10:28:27

标签: android xml android-layout

所以我想将LinearLayout设为看起来像一个按钮。我正在使用LinearLayout,因为我使用“Font awesome”作为图标,我需要将图标放在按钮内,所以我有一个LinearLayout,其中有两个TextView s作为孩子。一个用于图标,另一个用于文本。

我想要的是让LinearLayout看起来像默认样式按钮,但颜色不同。在棒棒糖和更新的它也应该有涟漪效应。

我设法通过添加backgroundTint来做到这一点,但它只适用于Marshmallow,在KitKat上按钮具有默认颜色。这是我的代码:

布局:

<LinearLayout
        android:id="@+id/btn_register"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        style="@style/MyTheme.Button" >
        <TextView
            android:id="@+id/ic_register"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/white"
            android:text="@string/fa_user_plus"
            android:textSize="16dp"
            android:paddingRight="4dp" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/white"
            android:text="Register as a new user"
            android:textSize="16dp" />
  </LinearLayout>

风格:

<style name="MyTheme.Button" parent="@android:style/Widget.DeviceDefault.Button">
    <item name="android:backgroundTint">@color/accent</item>
</style>

2 个答案:

答案 0 :(得分:1)

解决方案:我创建了2个不同的背景选择器 - 一个用于API 21,另一个用于旧设备。

抽拉/ btn_red.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="#88FFFFFF" />
            <corners android:radius="2dp"/>
        </shape>
    </item>         

    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/accent" />
            <corners android:radius="2dp"/>
        </shape>
    </item>
</selector>

可绘制-V21 / btn_red.xml:

<ripple
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="#88FFFFFF"> <!-- The ripple color -->

    <!-- the normal bg color will be light white -->
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/accent" />
            <corners android:radius="2dp"/>
        </shape>
    </item>
</ripple>

答案 1 :(得分:0)

如果这对您有用:

    <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="103dp"
    android:layout_marginTop="46dp"
    android:textColor="@android:color/white"
    android:background="@drawable/your_icon"
    android:gravity="right|center_horizontal"
    android:text="Register as a new user" />

您可以根据需要自定义或更改它,使用重力来改变文本的位置。