类似的形状绘制不同

时间:2016-04-09 08:40:52

标签: android android-styles

我不明白为什么当代码几乎相同时,结果会有这样的差异。

enter image description here

两个按钮都使用相同的代码生成:

int resId = (tile.getFormula() == null) ? R.layout.template_puzzle_result : R.layout.template_puzzle_formula;
AppCompatButton button = (AppCompatButton) getActivity().getLayoutInflater().inflate(resId, puzzleGrid, false);
    colorsNormal = ColorStateList.valueOf(getResources().getColor(R.color.tile_normal));
button.setSupportBackgroundTintList(colorsNormal);

它们是存储在android.support.v7.widget.GridLayout中的标准按钮。唯一的区别是风格属性。

<Button
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_columnWeight="1"
    app:layout_rowWeight="1"
    app:layout_gravity="fill"
    style="@style/PuzzleTileResult"
/>

background属性外,样式相同。我不明白有一个奇怪的警告图标。

enter image description here

左键是:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >    
    <solid android:color="@color/colorPrimary" />
    <stroke
        android:width="30px"
        android:color="@color/green_215" />    
</shape>

右键是:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >    
    <solid android:color="@color/colorPrimary" />
    <stroke
        android:width="3px"
        android:color="@color/colorAccent" />    
</shape>

颜色

<color name="tile_normal">#ffee00</color> - yellow
<color name="colorPrimary">#3F51B5</color> - blue
<color name="colorAccent">#FF4081</color> - pink

我希望

  • 左按钮为30px厚绿色边框和黄色内饰
  • 右键为3px厚粉色边框和黄色内饰

但它的行为并不一致 - 左键从XML中获取内部颜色,从代码中获取内部颜色。左边的一个周围涂有代码颜色,而右边没有。为什么呢?

0 个答案:

没有答案