0

我有一个在 xml 文件中定义的背景按钮,以便它显示我选择的形状和颜色等。

到目前为止,我一直在使用旧的 api,而且效果很好,但是自从将代码更新到最新的 android 版本后,我发现我设置的颜色,虽然它们在我正在测试的 android 4 平板电脑上运行良好,但不再适用我的旧安卓 2.3.5 手机。相反,应用程序似乎忽略了我的颜色选择并使用(我猜是因为它是某种默认设置)黑色到白色的渐变(分别从上到下,同时角度设置为 270)。我可以改变角度,所以必须使用 xml 文件,但无论我将开始/结束颜色设置为什么,它们似乎都被忽略了。

按钮背景xml如下:

  <?xml version="1.0" encoding="utf-8"?>
  <selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item>     
    <shape>
       <gradient
            android:endColor="@color/MyEndColor"
            android:startColor="@color/MyStartColor"
            android:angle="270" />
        <stroke
            android:width="1dp"
            android:color="@color/MyStrokeColor"/>
        <corners
            android:radius="10dp" />
        <padding
            android:left="6dp"
            android:top="10dp"
            android:right="6dp"
            android:bottom="10dp" />
    </shape>
</item>

布局xml定义按钮如下:

  <Button           
    android:layout_width="120dip"
    android:layout_height="wrap_content" 
    android:layout_below="@+id/firstEditText"
    android:layout_marginTop="30dip"
    android:layout_centerHorizontal="true"
    android:drawableRight="@drawable/firstBtnIcon"              
    android:textSize="26sp"
    android:textColor="#AA000000"               
    android:textStyle="bold"
    android:onClick="test"
    android:id="@+id/firstBtn"
    android:background="@drawable/mybutton"
   />

该按钮位于滚动视图内的相对布局内。

有没有人知道任何 api 的具体原因,或者是否有任何已知的升级项目的 eclipse 问题?(我已经尝试清理项目但没有改变。)

4

1 回答 1

0

似乎偶然发现了答案,但我不确定其背后的逻辑。
为了确认我的问题与 api 相关,我将项目改回了目标 api 10,然后它又恢复了正确显示按钮。这样做时,我必须删除我添加到活动中的一行:requestWindowFeature(Window.FEATURE_ACTION_BAR);

我已经添加了这一行,因此我想要的一些应用程序选项可以显示在选项弹出窗口中(以前可以通过设备物理正面选项按钮获得,该按钮已从 android 设备中删除,取而代之的是可选的屏幕按钮。)

最终我回到了最新的 api,但忘记取消注释这一行,然后看,按钮仍然正确显示。取消注释该行,按钮再次显示不需要的黑白渐变。
因此,我将代码修改为:

  if(android.os.Build.VERSION.SDK_INT > 10)//if past android 2
  {
        requestWindowFeature(Window.FEATURE_ACTION_BAR);//so options can be displayed above android 2
  }

现在它适用于我的两个设备。以为我应该发布这个以防其他人遇到它,但正如我所说,我不确定它背后的逻辑在 android 的引擎盖下。

于 2013-07-04T15:20:01.140 回答