É possível desenhar uma borda em torno de uma visualização de texto?
android
android-layout
textview
yamspog
fonte
fonte
Respostas:
Você pode definir uma forma desenhável (um retângulo) como plano de fundo para a vista.
E retângulo drawable back.xml (colocado na pasta res / drawable):
Você pode usar
@android:color/transparent
para que a cor sólida tenha um fundo transparente. Você também pode usar preenchimento para separar o texto da borda. para obter mais informações, consulte: http://developer.android.com/guide/topics/resources/drawable-resource.htmlfonte
Deixe-me resumir alguns métodos diferentes (não programáticos).
Usando um desenho de forma
Salve o seguinte como um arquivo XML na sua pasta extraível (por exemplo, my_border.xml):
Em seguida, basta defini-lo como plano de fundo para o seu TextView:
Mais ajuda:
Usando um patch de 9
Um patch 9 é uma imagem de plano de fundo extensível. Se você criar uma imagem com uma borda, ela fornecerá uma borda ao TextView. Tudo o que você precisa fazer é criar a imagem e defini-la como plano de fundo no seu TextView.
Aqui estão alguns links que mostrarão como criar uma imagem de 9 patches:
E se eu só quiser a borda superior?
Usando uma lista de camadas
Você pode usar uma lista de camadas para empilhar dois retângulos um sobre o outro. Ao tornar o segundo retângulo um pouco menor que o primeiro, você pode criar um efeito de borda. O primeiro retângulo (inferior) é a cor da borda e o segundo retângulo é a cor do plano de fundo.
A configuração
android:top="2dp"
compensa a parte superior (diminui) em 2dp. Isso permite que o primeiro retângulo (inferior) seja exibido, fornecendo um efeito de borda. Você pode aplicar isso ao plano de fundo do TextView da mesma maneira que oshape
drawable foi feito acima.Aqui estão mais alguns links sobre listas de camadas:
Usando um patch de 9
Você pode criar uma imagem de 9 patches com uma única borda. Tudo o resto é o mesmo que discutido acima.
Usando uma vista
Isso é meio que um truque, mas funciona bem se você precisar adicionar um separador entre duas visualizações ou uma borda a um único TextView.
Aqui estão mais alguns links:
fonte
border: 1px solid #999;
não é para ser tão complicado assim.A maneira mais simples é adicionar uma exibição para o seu TextView. Exemplo para a linha de borda inferior:
Para as outras bordas da direção, ajuste o local da vista do separador.
fonte
Resolvi esse problema estendendo a exibição de texto e desenhando uma borda manualmente. Eu até adicionei para que você possa selecionar se uma borda é pontilhada ou tracejada.
E a classe da fronteira:
Espero que isso ajude alguém :)
fonte
Eu estava apenas procurando uma resposta semelhante - ela pode ser feita com um Stroke e a seguinte substituição:
fonte
Você pode definir a borda por dois métodos. Um é por meio de drawable e o segundo é programático.
Usando Drawable
Programático
fonte
Solução mais simples que encontrei (e que realmente funciona):
fonte
Eu encontrei uma maneira melhor de colocar uma borda em torno de um TextView.
Use uma imagem de nove correções para o fundo. É bem simples, o SDK vem com uma ferramenta para criar a imagem de 9 patches e não envolve absolutamente nenhuma codificação.
O link é http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch .
fonte
Você pode adicionar algo assim no seu código:
fonte
Verifique o link abaixo para fazer cantos arredondados http://androidcookbook.com/Recipe.seam?recipeId=2318
A pasta de desenho, em res, em um projeto Android não está restrita a bitmaps (arquivos PNG ou JPG), mas também pode conter formas definidas em arquivos XML.
Essas formas podem ser reutilizadas no projeto. Uma forma pode ser usada para colocar uma borda ao redor de um layout. Este exemplo mostra uma borda retangular com cantos curvos. Um novo arquivo chamado customborder.xml é criado na pasta drawable (no Eclipse, use o menu File e selecione New then File, com a pasta drawable selecionada, digite o nome do arquivo e clique em Finish).
O XML que define a forma da borda é inserido:
O atributo
android:shape
está definido como retângulo (os arquivos de forma também suportam oval, linha e anel). Retângulo é o valor padrão; portanto, esse atributo pode ser deixado de fora se for um retângulo definido. Consulte a documentação do Android sobre formas em http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape para obter informações detalhadas sobre um arquivo de forma.Os cantos do elemento definem os cantos do retângulo a serem arredondados. É possível definir um raio diferente em cada canto (consulte a referência do Android).
Os atributos de preenchimento são usados para mover o conteúdo da Vista na qual a forma é aplicada, para impedir que o conteúdo se sobreponha à borda.
A cor da borda aqui é definida como cinza claro (valor RGB hexadecimal).
As formas também suportam gradientes, mas isso não está sendo usado aqui. Mais uma vez, consulte os recursos do Android para ver como um gradiente é definido. A forma é aplicada ao layout usando
android:background="@drawable/customborder"
.Dentro do layout, outras visualizações podem ser adicionadas normalmente. Neste exemplo, um único TextView foi adicionado e o texto é branco (FFFFFF hexadecimal RGB). O plano de fundo está definido como azul, mais alguma transparência para reduzir o brilho (valor A00000FF hexadecimal alfa RGB). Finalmente, o layout é deslocado da borda da tela, colocando-o em outro layout com uma pequena quantidade de preenchimento. O arquivo de layout completo é assim:
fonte
Eu tenho uma maneira de fazê-lo de maneira muito simples e gostaria de compartilhá-lo.
Quando eu quero quadrado mi TextViews, basta colocá-los em um LinearLayout. Defino a cor de fundo do meu LinearLayout e adiciono uma margem ao meu TextView. O resultado é exatamente como se você quadrasse o TextView.
fonte
Alterando a resposta de Konstantin Burov, porque não funciona no meu caso:
compileSdkVersion 26 (Android 8.0), minSdkVersion 21 (Android 5.0), targetSdkVersion 26, implementação 'com.android.support:appcompat-v7:26.1.0', nível: 4.1
fonte
Você pode criar um plano de fundo personalizado para sua exibição de texto. Etapas 1. Vá para o seu projeto. 2. Acesse recursos e clique com o botão direito do mouse em drawable. 3. Clique em Novo -> Arquivo de Recursos Drawable 4. Dê um nome ao seu arquivo 5. Cole o seguinte código no arquivo
Para a sua exibição de texto onde você deseja usá-la como backgroud,
android: background = "@ drawable / your_fileName"
fonte
Aqui está minha classe auxiliar 'simples' que retorna um ImageView com a borda. Basta colocar isso na sua pasta utils e chamá-lo assim:
Aqui está o código.
fonte
selectionBorder
?Isso pode ajudá-lo.
fonte
Crie uma vista de borda com a cor de fundo como a cor da borda e o tamanho da vista de texto. defina o preenchimento da vista da borda como a largura da borda. Defina a cor de fundo da exibição de texto como a cor desejada para a exibição de texto. Agora adicione sua exibição de texto dentro da borda.
fonte
Tente o seguinte:
fonte
Existem várias maneiras de adicionar uma borda a um textView. O mais simples é criar um drawable personalizado e configurá-lo como
android:background="@drawable/textview_bg"
para o seu textView.O textview_bg.xml irá para Drawables e pode ser algo como isto. Você pode ter um
solid
ou umgradient
plano de fundo (ou nada, se não for necessário),corners
para adicionar um raio de canto estroke
adicionar borda.textview_bg.xml
fonte
este código o suficiente, você pode colocar onde quiser
fonte
setBackground em seu texto em xml,
adicione o arquivo rounded_textview.xml ao seu diretório drawable.
definir arquivo drawable em segundo plano textView.
fonte
Na verdade, é muito simples. Se você deseja um simples retângulo preto atrás do Textview, basta adicionar
android:background="@android:color/black"
dentro das tags TextView. Como isso:fonte