Estou tentando definir o preenchimento em um <shape>
declarado em um arquivo / layout XML. Mas o que quer que eu defina, nada muda relacionado ao preenchimento. Se eu modificar qualquer outra propriedade, vejo os efeitos na IU. Mas não funciona com preenchimento. Você poderia informar sobre os possíveis motivos pelos quais isso pode ocorrer?
Aqui está o formato XML que estou tentando estilizar:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:width="1dp"
android:color="#ffffff"
android:dashWidth="2dp"/>
<solid android:color="@color/button_white_cover"/>
<corners android:radius="11dp"/>
<padding android:left="1dp"
android:top="20dp"
android:right="20dp"
android:bottom="2dp"/>
</shape>
fonte
<item>
aceita drawables filho (embora não seja explicitamente documentado). É assim que você pode obter esse comportamento em um único xml.<shape><padding>
para ?Como alguns comentários já mencionaram, a melhor abordagem é envolver o
<shape>
em um<item>
elemento e definir o preenchimento lá. No entanto, existem outras opções disponíveis que são detalhadas no link abaixo. por exemplo<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:left="8dp" android:right="8dp" android:top="8dp" android:bottom="8dp"> <shape android:shape="rectangle"> ... </shape> </item> </layer-list>
Dependendo de suas necessidades, em vez de usar uma lista de camadas, você pode usar qualquer um dos seguintes tipos de drawable:
Para obter mais informações sobre os tipos de drawable disponíveis, consulte esta documentação do Android
Fontes:
fonte
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
A resposta de Lyobomyr funciona, mas aqui está a mesma solução aplicada, mas sem a sobrecarga de criar um novo drawable, minimizando assim a confusão de arquivos:
https://stackoverflow.com/a/3588976/578746
Copie / cole a resposta por anon na resposta SO acima:
<item android:left="6dp" android:right="6dp"> <shape android:shape="rectangle"> <gradient android:startColor="#ccd0d3" android:centerColor="#b6babd" android:endColor="#ccd0d3" android:height="1px" android:angle="0"/> </shape> </item>
fonte
Você pode tentar inserções:
<?xml version="1.0" encoding="UTF-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetBottom="2dp" android:insetLeft="1dp" android:insetRight="20dp" android:insetTop="20dp"> <shape android:shape="rectangle"> <stroke android:width="1dp" android:color="#ffffff" android:dashWidth="2dp" /> <solid android:color="@color/button_white_cover" /> <corners android:radius="11dp" /> </shape> </inset>
fonte
Resolvi este problema assim:
<shape android:shape="oval" > <stroke android:width="4dp" android:color="@android:color/transparent" /> <solid android:color="@color/colorAccent" /> </shape>
acabou de adicionar um traço transparente a ele.
fonte