【问题标题】:Create Button with rounded corners in android [duplicate]在android中创建带圆角的按钮[重复]
【发布时间】:2012-09-28 02:13:00
【问题描述】:

我正在尝试创建一个如上图所示的按钮。最初我的想法是创建一个 9 补丁并将其设置为按钮背景。但既然这是一个普通的按钮,我想我们可以在不使用任何图像的情况下以某种方式绘制它。

按钮背景颜色为#0c0c0c 边框颜色为#1a1a1a 文字颜色为#cccccc

我在 SO 上发现了一个类似的问题,但这会产生渐变 -
Android - border for button

【问题讨论】:

  • "按钮背景颜色是 #0c0c0c 边框颜色是 #1a1a1a" -- 这可能是 一个 组颜色,但您需要的不止这些。如果我们假设您希望这些颜色成为正常状态,那么按下状态的颜色是什么?残疾人状态?专注的状态?可能还有其他状态,默认 Button 后台处理超出这些状态,但我会从它们开始。
  • 谷歌有新框架,新技术更好Jetpack Compose

标签: android android-layout android-button


【解决方案1】:

Android 开发人员指南对此有详细指南:Shape Drawbables

您也可以简单地从您提供的链接中删除 gradient 元素:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="3dp" />
    <stroke android:width="5px" android:color="#1a1a1a" />
</shape>

【讨论】:

  • 谢谢 :) 添加这个以获得固体背景
【解决方案2】:
   <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/textView1"
    android:layout_alignLeft="@+id/textView1"
    android:layout_marginBottom="56dp"
    android:text="Button" 
    android:textColor="#FF0F13"
    android:background="@drawable/bbkg"/>//create bbkg.xml in drawable folder

bbkg.xml//按钮背景

   <?xml version="1.0" encoding="utf-8"?>
  <selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true" 
    android:drawable="@drawable/pressed" />
  <item  android:state_focused="false" 
    android:drawable="@drawable/normal" />
  </selector>

normal.xml //按钮背景正常状态

  <?xml version="1.0" encoding="UTF-8"?> 
  <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"> 
  <solid android:color="#10EB0A"/>    
  <stroke android:width="3dp"
        android:color="#0FECFF" /> 
  <padding android:left="5dp"
         android:top="5dp"
         android:right="5dp"
         android:bottom="5dp"/> 
  <corners android:bottomRightRadius="7dp"
         android:bottomLeftRadius="7dp" 
         android:topLeftRadius="7dp"
         android:topRightRadius="7dp"/> 
  </shape>   

pressed.xml //按钮背景按下状态

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle"> 
<solid android:color="#FF1A47"/>    
<stroke android:width="3dp"
        android:color="#0FECFF"/>

<corners android:bottomRightRadius="7dp"
         android:bottomLeftRadius="7dp" 
         android:topLeftRadius="7dp"
         android:topRightRadius="7dp"/> 
</shape>  

【讨论】:

  • 在正常和按下状态下,您可以更改按钮的边框以及按钮背景颜色。只需适当地使用颜色代码
【解决方案3】:

如果你想要这样的东西

按钮预览

这里是代码。

1.在你的drawable文件夹中创建一个xml文件,比如mybutton.xml,并粘贴以下标记:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
 <item android:state_pressed="true" >
     <shape android:shape="rectangle"  >
         <corners android:radius="3dip" />
         <stroke android:width="1dip" android:color="#5e7974" />
         <gradient android:angle="-90" android:startColor="#345953" android:endColor="#689a92"  />            
     </shape>
 </item>
<item android:state_focused="true">
     <shape android:shape="rectangle"  >
         <corners android:radius="3dip" />
         <stroke android:width="1dip" android:color="#5e7974" />
         <solid android:color="#58857e"/>       
     </shape>
 </item>  
<item >
    <shape android:shape="rectangle"  >
         <corners android:radius="3dip" />
         <stroke android:width="1dip" android:color="#5e7974" />
         <gradient android:angle="-90" android:startColor="#8dbab3" android:endColor="#58857e" />            
     </shape>
 </item>
</selector>

2.现在使用这个drawable作为你视图的背景。如果视图是按钮,则如下所示:

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:textColor="#ffffff"
    android:background="@drawable/mybutton"
    android:text="Buttons" />

【讨论】:

    【解决方案4】:

    只需使用MaterialButton

           <com.google.android.material.button.MaterialButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="@style/Widget.MaterialComponents.Button.OutlinedButton"
                android:backgroundTint="..."
                app:strokeColor="..."
                android:textColor="..."
                app:cornerRadius="xxdp"
                android:text="BUTTON"
                />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      • 2018-10-09
      相关资源
      最近更新 更多