【问题标题】:Android - Any way to style a button background but leave the rest as it was?Android - 有什么方法可以设置按钮背景的样式,但其余部分保持原样?
【发布时间】:2012-03-20 21:27:00
【问题描述】:

Android 中是否有任何方法可以在不改变其余部分的情况下设置按钮的背景渐变样式?

我想制作一个与普通按钮一样但具有不同渐变的按钮。我在表格布局中制作了一个 3x3 的按钮网格。第一个按钮就像这里的 XML,其他的没有背景属性。

   <Button android:id="@+id/DemoButton"
    android:layout_width="105sp"
    android:layout_height="105sp"
    android:background="@drawable/button1"
    android:onClick="theButtonHandler"
    android:text="Fee">
  </Button>

我的风格是这样的。 . .

<selector
xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_pressed="true" >
   <shape>
      <gradient
         android:startColor="#5555AA"
         android:endColor="#000033"
         android:angle="270" />
   </shape>
 </item>
 <item>
   <shape>
      <gradient
         android:startColor="#BBBBDD"
         android:endColor="#BB9988"
         android:angle="270"/>
      <corners android:bottomRightRadius="3dp" android:bottomLeftRadius="3dp"
          android:topLeftRadius="3dp" android:topRightRadius="3dp"/>
    </shape>
  </item>
</selector>

我必须输入圆角半径,因为新按钮有 90 度的尖角。结果如下所示:

。 . .它比其他按钮大,我必须在圆角中编码,即使我要更改的唯一属性是“android:background”。我怎样才能改变背景?提前致谢!!

【问题讨论】:

    标签: android


    【解决方案1】:

    如果您查看 Android 用于按钮的可绘制对象,您会发现在图像的边界附近始终有一定数量的像素保持透明。我假设您使用的图像没有任何透明边框。要使其看起来与 Android 可绘制对象相同,您应该添加这些边框。您可以浏览您的android-sdk/platforms/&lt;some-platform&gt;/data/res/&lt;some-drawable-folder&gt; 文件夹以查看图像的设计方式。希望这会有所帮助。

    【讨论】:

    • 谢谢 - 这很有帮助。 (+1)
    【解决方案2】:

    您可以轻松地将其更改为

    <selector
    xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true" >
       <shape>
          <gradient
             android:startColor="#5555AA"
             android:endColor="#000033"
             android:angle="270" />
           <corners
       android:bottomRightRadius="10dp"
       android:bottomLeftRadius="10dp"
       android:topLeftRadius="10dp"
       android:topRightRadius="10dp"/>
       </shape>
     </item>
     <item>
       <shape>
          <gradient
             android:startColor="#BBBBDD"
             android:endColor="#BB9988"
             android:angle="270"/>
           <corners
       android:bottomRightRadius="10dp"
       android:bottomLeftRadius="10dp"
       android:topLeftRadius="10dp"
       android:topRightRadius="10dp"/>
        </shape>
      </item>
    </selector>
    

    【讨论】:

      猜你喜欢
      • 2017-03-10
      • 2015-02-08
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多