Depois de salvá-lo na pasta drawable como um arquivo xml, como podemos usá-lo?
Android Killer
1
@AndroidPower você pode usá-lo com R.drawable.FILE_NAME
slayton
2
Para onde vai esse código, no código .axml da marcação do botão? Ele aparece em um arquivo do tipo styles.xml?
214126 (
Usei apenas o traço (e o deixei branco) para delinear um botão com branco. Funciona muito bem com o 4.4, mas no 4.0.3 o botão fica preto - alguma idéia por que?
23714 Kibi
1
@Kibi desculpe, alguém editou minha resposta e deu conselhos incorretos. Eu mudei, mas estou chocado que alguém possa editar uma resposta aceita e alterar a utilidade.
Pedantic
57
• Android Official Solution
Desde que o Android Design Support v28 foi introduzido, é fácil criar um botão com borda usando MaterialButton. Esta classe fornece estilos de Material atualizados para o botão no construtor. Usando app:strokeColore app:strokeWidthvocê pode criar uma borda personalizada da seguinte maneira:
<com.google.android.material.button.MaterialButtonstyle="@style/Widget.AppCompat.Button.Borderless"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="UNFILLED MATERIAL BUTTON"android:textColor="@color/green"android:textSize="15sp"app:backgroundTint="@android:color/transparent"app:cornerRadius="8dp"app:rippleColor="#33AAAAAA"app:strokeColor="@color/green"app:strokeWidth="2dp"/>
<android.support.design.button.MaterialButtonstyle="@style/Widget.AppCompat.Button.Borderless"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="UNFILLED MATERIAL BUTTON"android:textColor="@color/green"android:textSize="15sp"app:backgroundTint="@android:color/transparent"app:cornerRadius="8dp"app:rippleColor="#33AAAAAA"app:strokeColor="@color/green"app:strokeWidth="2dp"/>
Vejo que você tem textColor e textSize declarados em seu botão XML. O que você sugere se alguém já tem um estilo definido para textColor e textSize e agora deseja adicionar o style="@style/Widget.AppCompat.Button.Borderless"?
Como você mencionou, é possível definir um estilo que herda do estilo sem borda e, em seguida, adicionar atributos preferenciais de acordo com o estilo base.
aminography 6/03/19
Ligeiramente OT, mas qual é o quarto ícone interessante na barra de ação na parte inferior do GIF? (Também parece que o GIF foi retirado de um dispositivo real, legal)
i336_
1
Talvez eu esteja errado, mas para mim, no botão com borda não preenchida, tive que mudar, app: backgroundTint = "@ color / transparent" para app: backgroundTint = "@ android: color / transparent"
xarly
37
Crie um button_border.xmlarquivo na sua pasta drawable.
Se o botão não exigir um plano de fundo transparente, você poderá criar uma ilusão de uma borda usando um Layout de quadro. Basta ajustar o atributo "padding" do FrameLayout para alterar a espessura da borda.
<FrameLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="1sp"android:background="#000000"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Your text goes here"android:background="@color/white"android:textColor="@color/black"android:padding="10sp"/></FrameLayout>
Não tenho certeza se os arquivos xml de forma têm cores de borda editáveis dinamicamente. Mas eu sei que com esta solução, você pode alterar dinamicamente a cor da borda, definindo o plano de fundo FrameLayout.
GradientDrawable gd1 =newGradientDrawable();
gd1.setColor(0xFFF43F10);// Changes this drawbale to use a single color instead of a gradient
gd1.setCornerRadius(5);
gd1.setStroke(1,0xFFF43F10);
cancelskill.setBackgroundDrawable(gd1);
cancelskill.setOnClickListener(newView.OnClickListener(){@Overridepublicvoid onClick(View v){
cancelskill.setBackgroundColor(Color.parseColor("#ffffff"));
cancelskill.setTextColor(Color.parseColor("#f43f10"));GradientDrawable gd =newGradientDrawable();
gd.setColor(0xFFFFFFFF);// Changes this drawbale to use a single color instead of a gradient
gd.setCornerRadius(5);
gd.setStroke(1,0xFFF43F10);
cancelskill.setBackgroundDrawable(gd);
finish();}});
Sei que está um ano atrasado, mas você também pode criar uma imagem de 9 caminhos. Existe uma ferramenta que acompanha o SDK do Android que ajuda na criação dessa imagem. Veja este link: http://developer.android.com/tools/help/draw9patch .html
PS: a imagem também pode ser dimensionada infinitamente
Respostas:
Etapa 1: criar um arquivo chamado: my_button_bg.xml
Etapa 2: coloque este arquivo em res / drawables.xml
Etapa 3: insira o código abaixo
Etapa 4: use o código "android: background =" @ drawable / my_button_bg "onde necessário, por exemplo, abaixo:
fonte
•
Android Official Solution
Desde que o Android Design Support v28 foi introduzido, é fácil criar um botão com borda usando
MaterialButton
. Esta classe fornece estilos de Material atualizados para o botão no construtor. Usandoapp:strokeColor
eapp:strokeWidth
você pode criar uma borda personalizada da seguinte maneira:1. Quando você usa
androidx
:build.gradle
• Botão com borda:
• Botão com borda não preenchida:
2. Quando você usa
appcompat
:build.gradle
style.xml
Verifique se o tema do aplicativo é herdado em
Theme.MaterialComponents
vez deTheme.AppCompat
.• Botão com borda:
• Botão com borda não preenchida:
Resultado Visual
fonte
style="@style/Widget.AppCompat.Button.Borderless"
?Crie um
button_border.xml
arquivo na sua pasta drawable.res / drawable / button_border.xml
E adicione um botão ao seu layout de atividade XML e defina o plano de fundo
android:background="@drawable/button_border"
.fonte
crie drawable / button_green.xml:
e aponte-o como
@drawable/button_green
:fonte
Veja aqui como criar um desenho de forma http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
Depois de fazer isso, no XML do seu conjunto de botões
android:background="@drawable/your_button_border"
fonte
Se o botão não exigir um plano de fundo transparente, você poderá criar uma ilusão de uma borda usando um Layout de quadro. Basta ajustar o atributo "padding" do FrameLayout para alterar a espessura da borda.
Não tenho certeza se os arquivos xml de forma têm cores de borda editáveis dinamicamente. Mas eu sei que com esta solução, você pode alterar dinamicamente a cor da borda, definindo o plano de fundo FrameLayout.
fonte
No seu layout XML:
Na pasta drawable, crie um arquivo para o estilo da borda do botão:
E na sua atividade:
fonte
Sei que está um ano atrasado, mas você também pode criar uma imagem de 9 caminhos. Existe uma ferramenta que acompanha o SDK do Android que ajuda na criação dessa imagem. Veja este link: http://developer.android.com/tools/help/draw9patch .html
PS: a imagem também pode ser dimensionada infinitamente
fonte