2016-03-01 58 views
1

所以我想风格LinearLayout看起来像一个按钮。我使用LinearLayout,因为我使用的“字体真棒”的图标,我需要把图标的按钮里面,所以我有一个LinearLayout,它有两个TextView S作为孩子。一个用于图标,另一个用于文本。Android的风格查看喜欢的彩色按钮

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

我设法做到这一点,通过添加一个backgroundTint,但它只适用于棉花糖,在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> 
+0

尝试采用了android:背景,而不是机器人的:backgroundTint – Joakim

+0

@Joakim,消除所有的按钮风格 - 波纹和圆角。 –

+0

也许你可以使用一个简单的按钮,图标作为背景,并将你的文本放置在你想要的layout_align中。这比布局更容易,但我不知道是否对你有用。 –

回答

0

解决方案:我创建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> 
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" /> 

而且你可以自定义或改变它,你希望通过引力来改变文本的位置。

+0

不能使用图标作为背景,因为它不是可绘制的。我使用“Font awesome”图标字体来显示图标。 –

+0

啊,我明白了。如果你用文本绘制一个可绘制的东西,那么简单,用paint,photoshop ...和图标呢?你可以做的按钮,你可以和有一个真正的按钮,您的喜好,文字,图标... –

+0

然后我将不得不做出绘制的几个版本不同的屏幕密度,我会做,对于每一个按钮。 –