How do you render text in an android layer-list xml file?

前端 未结 1 631
耶瑟儿~
耶瑟儿~ 2020-12-31 10:08

I would like to add text to a layer-list xml file that is used as a drawable background for a Switch element. The problem is the text in the switch element changes before th

相关标签:
1条回答
  • 2020-12-31 10:24

    With the new api21 you can use VectorDrawables to do something like you want. Here is an example:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="true">
            <shape>
                <solid android:color="@android:color/white"/>
                <corners android:radius="5dp"/>
            </shape>
        </item>
        <item android:drawable="@drawable/vector"/>
    </layer-list>
    

    That will use a drawable vector like the following:

    <?xml version="1.0" encoding="utf-8"?>
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
            android:height="32dp"
            android:width="32dp"
            android:viewportHeight="200"
            android:viewportWidth="200">
        <path android:name="text"
              android:fillColor="@android:color/black"
              android:pathData="M 28.53,92.12
               C 27.92,92.12 27.56,91.64 27.56,91.09
                 27.56,90.52 27.92,90.00 28.50,90.00
                 28.50,90.00 41.73,90.00 41.73,90.00
                 42.31,90.00 42.67,90.52 42.67,91.09
                 42.67,91.64 42.28,92.12 41.73,92.12
                 41.73,92.12 36.31,92.12 36.31,92.12
                 36.31,92.12 36.31,108.02 36.31,108.02
                 36.31,108.67 35.78,109.00 35.12,109.00
                 34.48,109.00 33.94,108.67 33.94,108.02
                 33.94,108.02 33.94,92.12 33.94,92.12
                 33.94,92.12 28.53,92.12 28.53,92.12 Z
               M 55.80,108.11
               C 55.80,108.72 55.28,109.00 54.66,109.00
                 54.02,109.00 53.55,108.72 53.55,108.11
                 53.55,108.11 53.55,100.94 53.55,100.94
                 53.55,99.03 52.73,97.97 50.94,97.97
                 49.59,97.97 48.56,98.56 47.77,99.55
                 47.17,100.31 46.92,100.95 46.92,101.83
                 46.92,101.83 46.92,108.11 46.92,108.11
                 46.92,108.72 46.47,109.00 45.84,109.00
                 45.17,109.00 44.69,108.72 44.69,108.11
                 44.69,108.11 44.69,91.09 44.69,91.09
                 44.69,90.38 45.17,90.00 45.84,90.00
                 46.47,90.00 46.92,90.34 46.92,91.09
                 46.92,91.09 46.92,97.77 46.92,97.77
                 46.92,98.06 46.81,98.58 46.77,98.92
                 46.77,98.92 46.70,98.89 46.70,98.89
                 47.50,97.25 48.84,96.00 51.38,96.00
                 54.22,96.00 55.80,97.73 55.80,100.52
                 55.80,100.52 55.80,108.11 55.80,108.11 Z
               M 60.25,103.00
               C 60.30,105.59 61.72,107.20 64.31,107.20
                 66.05,107.20 66.97,106.42 67.55,105.31
                 67.55,105.31 67.55,105.34 67.55,105.34
                 67.77,104.97 68.11,104.81 68.44,104.81
                 68.61,104.81 68.78,104.86 68.94,104.89
                 69.36,105.00 69.72,105.25 69.72,105.64
                 69.72,105.77 69.69,105.89 69.64,105.95
                 68.84,107.42 67.41,109.00 64.28,109.00
                 60.36,109.00 58.03,106.34 58.03,102.67
                 58.03,98.80 60.23,96.00 64.14,96.00
                 67.66,96.00 69.66,98.64 69.89,101.50
                 69.89,101.56 69.89,101.61 69.89,101.69
                 69.89,102.55 69.41,103.00 68.66,103.00
                 68.66,103.00 60.25,103.00 60.25,103.00 Z
               M 67.31,101.25
               C 67.58,101.25 67.64,101.17 67.64,100.97
                 67.64,100.95 67.64,100.91 67.64,100.88
                 67.34,99.33 66.36,97.77 64.14,97.77
                 61.84,97.77 60.62,99.14 60.31,101.25
                 60.31,101.25 67.31,101.25 67.31,101.25 Z
               M 82.88,108.17
               C 82.88,108.67 82.47,109.00 81.78,109.00
                 81.11,109.00 80.66,108.72 80.66,107.83
                 80.66,107.83 80.66,91.11 80.66,91.11
                 80.66,90.38 81.11,90.00 81.78,90.00
                 82.41,90.00 82.88,90.38 82.88,91.11
                 82.88,91.11 82.88,96.98 82.88,96.98
                 82.88,97.50 82.81,98.16 82.75,98.66
                 82.75,98.66 82.69,98.66 82.69,98.66
                 83.58,97.05 85.02,96.00 87.22,96.00
                 90.83,96.00 92.92,98.58 92.92,102.44
                 92.92,106.25 90.70,109.00 87.16,109.00
                 84.94,109.00 83.47,107.92 82.70,106.33
                 82.70,106.33 82.77,106.33 82.77,106.33
                 82.81,106.66 82.88,107.09 82.88,107.41
                 82.88,107.41 82.88,108.17 82.88,108.17 Z
               M 82.81,102.47
               C 82.81,105.16 84.34,107.11 86.86,107.11
                 89.30,107.11 90.64,105.25 90.64,102.61
                 90.64,99.70 89.34,97.88 86.94,97.88
                 84.30,97.88 82.81,99.88 82.81,102.47 Z
               M 95.66,96.91
               C 95.66,96.31 96.11,96.00 96.78,96.00
                 97.42,96.00 97.92,96.31 97.92,96.91
                 97.92,96.91 97.92,108.09 97.92,108.09
                 97.92,108.70 97.42,109.00 96.78,109.00
                 96.11,109.00 95.66,108.70 95.66,108.09
                 95.66,108.09 95.66,96.91 95.66,96.91 Z
               M 98.44,91.61
               C 98.44,92.55 97.69,93.25 96.80,93.25
                 95.89,93.25 95.14,92.55 95.14,91.61
                 95.14,90.70 95.89,90.00 96.80,90.00
                 97.69,90.00 98.44,90.70 98.44,91.61 Z
               M 111.00,96.88
               C 111.00,96.38 111.38,96.00 112.06,96.00
                 112.72,96.00 113.12,96.31 113.12,97.14
                 113.12,97.14 113.12,107.69 113.12,107.69
                 113.12,113.56 110.19,114.81 107.03,114.81
                 104.44,114.81 102.75,113.94 101.84,112.75
                 101.72,112.56 101.64,112.38 101.64,112.17
                 101.64,111.83 101.81,111.48 102.11,111.25
                 102.30,111.09 102.58,110.98 102.83,110.98
                 103.09,110.98 103.36,111.09 103.55,111.33
                 104.44,112.45 105.47,113.00 106.92,113.00
                 109.92,113.00 110.97,111.31 111.00,107.56
                 111.00,107.30 111.05,106.77 111.09,106.45
                 111.09,106.45 111.16,106.48 111.16,106.48
                 110.36,107.95 108.97,109.00 106.86,109.00
                 103.45,109.00 101.03,106.42 101.03,102.64
                 101.03,98.73 103.20,96.00 106.91,96.00
                 109.09,96.00 110.50,97.20 111.17,98.69
                 111.17,98.69 111.09,98.69 111.09,98.69
                 111.06,98.44 111.00,98.02 111.00,97.77
                 111.00,97.77 111.00,96.88 111.00,96.88 Z
               M 103.31,102.64
               C 103.31,105.52 104.91,107.25 107.14,107.25
                 109.59,107.25 111.05,105.28 111.05,102.47
                 111.05,99.78 109.61,97.83 107.17,97.83
                 104.72,97.83 103.31,99.70 103.31,102.64 Z
               M 126.09,91.11
               C 126.09,90.38 126.58,90.00 127.19,90.00
                 127.86,90.00 128.30,90.38 128.30,91.11
                 128.30,91.11 128.30,108.11 128.30,108.11
                 128.30,108.72 127.83,109.00 127.16,109.00
                 126.47,109.00 126.09,108.66 126.09,107.91
                 126.09,107.91 126.09,107.41 126.09,107.41
                 126.09,107.14 126.14,106.64 126.17,106.34
                 126.17,106.34 126.23,106.38 126.23,106.38
                 125.42,107.97 124.02,109.00 121.78,109.00
                 118.28,109.00 116.03,106.33 116.03,102.44
                 116.03,98.64 118.25,96.00 121.81,96.00
                 124.05,96.00 125.42,97.06 126.27,98.67
                 126.27,98.67 126.19,98.67 126.19,98.67
                 126.14,98.19 126.09,97.52 126.09,96.98
                 126.09,96.98 126.09,91.11 126.09,91.11 Z
               M 118.31,102.45
               C 118.31,105.30 119.67,107.14 122.09,107.14
                 124.61,107.14 126.14,105.16 126.14,102.64
                 126.14,99.91 124.73,97.88 122.09,97.88
                 119.67,97.88 118.31,99.77 118.31,102.45 Z
               M 143.42,102.47
               C 143.42,106.23 141.08,109.00 137.34,109.00
                 133.38,109.00 131.03,106.31 131.03,102.47
                 131.03,98.72 133.41,96.00 137.28,96.00
                 141.12,96.00 143.42,98.70 143.42,102.47 Z
               M 133.31,102.53
               C 133.31,105.28 134.72,107.16 137.19,107.16
                 139.81,107.16 141.14,105.33 141.14,102.44
                 141.14,99.72 139.81,97.86 137.36,97.86
                 134.77,97.86 133.31,99.66 133.31,102.53 Z
               M 155.00,96.88
               C 155.00,96.38 155.38,96.00 156.06,96.00
                 156.72,96.00 157.12,96.31 157.12,97.14
                 157.12,97.14 157.12,107.69 157.12,107.69
                 157.12,113.56 154.19,114.81 151.03,114.81
                 148.44,114.81 146.75,113.94 145.84,112.75
                 145.72,112.56 145.64,112.38 145.64,112.17
                 145.64,111.83 145.81,111.48 146.11,111.25
                 146.30,111.09 146.58,110.98 146.83,110.98
                 147.09,110.98 147.36,111.09 147.55,111.33
                 148.44,112.45 149.47,113.00 150.92,113.00
                 153.92,113.00 154.97,111.31 155.00,107.56
                 155.00,107.30 155.05,106.77 155.09,106.45
                 155.09,106.45 155.16,106.48 155.16,106.48
                 154.36,107.95 152.97,109.00 150.86,109.00
                 147.45,109.00 145.03,106.42 145.03,102.64
                 145.03,98.73 147.20,96.00 150.91,96.00
                 153.09,96.00 154.50,97.20 155.17,98.69
                 155.17,98.69 155.09,98.69 155.09,98.69
                 155.06,98.44 155.00,98.02 155.00,97.77
                 155.00,97.77 155.00,96.88 155.00,96.88 Z
               M 147.31,102.64
               C 147.31,105.52 148.91,107.25 151.14,107.25
                 153.59,107.25 155.05,105.28 155.05,102.47
                 155.05,99.78 153.61,97.83 151.17,97.83
                 148.72,97.83 147.31,99.70 147.31,102.64 Z
               M 161.23,91.11
               C 161.23,90.44 161.80,90.00 162.59,90.00
                 163.36,90.00 163.92,90.44 163.91,91.11
                 163.91,91.11 163.56,103.41 163.56,103.41
                 163.55,103.97 163.05,104.23 162.56,104.23
                 162.06,104.23 161.58,103.97 161.58,103.41
                 161.58,103.41 161.23,91.11 161.23,91.11 Z
               M 164.27,107.36
               C 164.27,108.36 163.45,109.00 162.56,109.00
                 161.62,109.00 160.88,108.36 160.88,107.36
                 160.88,106.34 161.62,105.70 162.56,105.70
                 163.45,105.70 164.27,106.34 164.27,107.36 Z"/>
    </vector>
    

    This will generate a list-layer drawable like the following:

    Most image tools (gimp, photoshop, illustrator, etc.) give you the ability to export the path that can be used for the vector graphic.

    Checkout the gist at github!

    0 讨论(0)
提交回复
热议问题