Android drawable旋转内部按钮

时间:2017-07-23 09:36:16

标签: android android-layout android-drawable

我需要一个带有内部文字和图标的按钮系列。 4个按钮内的图标必须旋转以覆盖每个多边形。

按照两个按钮的示例,其中顶部用原始(矢量绘图)图标创建,“左”按钮旋转矢量。

        <Button
            style="@style/Buttons.Small"
            android:drawableLeft="@drawable/ic_vertical_align_top_white_12dp"
            android:text="@string/optional" />

        <Button
            style="@style/Buttons.Small"
            android:drawableLeft="@drawable/arrow_left"
            android:text="@string/optional" />

矢量drawable: 的 ic_vertical_align_top_white_12dp

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="12dp"
     android:height="12dp"
     android:viewportHeight="24.0"
     android:viewportWidth="24.0">
     <path
         android:fillColor="#FFFFFF"
         android:pathData="M8,11h3v10h2V11h3l-4,-4 -4,4zM4,3v2h16V3H4z" />    
 </vector>

旋转drawable: 的 arrow_left.xml

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="-90"
    android:toDegrees="-90"
    android:pivotX="50%"
    android:pivotY="50%"
    android:drawable="@drawable/ic_vertical_align_top_white_12dp">
</rotate>

风格

<style name="Buttons.Small">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:background">@color/buttonSmallBackground</item>
    <item name="android:layout_margin">2dp</item>
    <item name="android:minHeight">0dp</item>
    <item name="android:minWidth">0dp</item>
    <item name="android:textSize">12sp</item>
    <item name="android:drawablePadding">4dp</item>
    <item name="android:paddingLeft">4dp</item>
    <item name="android:paddingRight">4dp</item>
</style>

并按照结果

Nougat (完美)

enter image description here

棉花糖(错误)

enter image description here

我已尝试使用向量viewport但未成功。

由于

1 个答案:

答案 0 :(得分:0)

我用诡计解决了。 直接在矢量中应用旋转。

现在 arrow_left.xml 变为

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="12dp"
    android:height="12dp"
    android:viewportHeight="24.0"
    android:viewportWidth="24.0">
    <group android:rotation="-90"
        android:pivotX="12"
        android:pivotY="12">
        <path
            android:fillColor="#FFFFFF"
            android:pathData="M8,11h3v10h2V11h3l-4,-4 -4,4zM4,3v2h16V3H4z" />
    </group>
</vector>

我不知道为什么在 Marshmallow 轮换无法正常工作但这解决了我的情况。

由于