Estou adicionando programaticamente visualizações personalizadas a um LinearLayout vertical e gostaria que houvesse algum espaço entre as visualizações. Tentei adicionar: setPadding (0, 1, 0, 1) ao meu construtor CustomView, mas isso não parece ter nenhum efeito. Algum conselho?
* Foi indicado que eu deveria usar margens. Como estou adicionando visualizações dinamicamente, preciso definir as margens do código (não no xml). Acredito que a maneira de fazer isso esteja abaixo, mas não está funcionando.
public class MyView extends View
{
public MyView (Context context)
{
super(context);
MarginLayoutParams params = new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(0, 10, 0, 10);
setLayoutParams(params);
*Editar. Também tentei usar MarginLayoutParams como parâmetro enquanto adicionava as visualizações ao layout Linear (como abaixo). Isso também não funcionou:
MarginLayoutParams params = new MarginLayoutParams(linearLayout.getLayoutParams());
linearLayout.setMargins(0, 10, 0, 10);
linearLayout.addView(view, params);
Respostas:
Você deveria
android:layout_margin<Side>
sobre as crianças. O preenchimento é interno.fonte
A solução API> = 11 :
Você pode integrar o preenchimento no divisor. Caso você não esteja usando nenhum, basta criar um drawable alto vazio e defina-o como
LinearLayout
divisor:empty_tall_divider.xml:
fonte
GONE
. Ao especificar,android:showDividers="middle"
você obterá apenas o espaço onde realmente precisa.O Android agora suporta a adição de uma visualização Espaço entre as visualizações. Está disponível a partir do 4.0 ICS.
fonte
A amostra abaixo faz o que você precisa programaticamente. Eu usei um tamanho fixo de (140.398).
fonte
Desde o nível API 14, você pode adicionar um divisor (transparente) desenhável:
e vai cuidar do resto para você!
fonte
8dp
de onde isso veio?Use em
LinearLayout.LayoutParams
vez deMarginLayoutParams
. Aqui está a documentação.fonte
LinearLayout.LayoutParams
estende-seMarginLayoutParams
e herda o mesmosetMargins()
método que você estava usando acima ...Se você usar o ActionBarSherlock , poderá usar com.actionbarsherlock.internal.widget.IcsLinearLayout:
fonte
Usando o preenchimento no layout do Child View.
layout.xml
backage_text.xml
fonte
Você pode obter o
LayoutParams
paiLinearLayout
e aplicar às visualizações individuais desta maneira:fonte
Tente adicionar o widget Space depois de adicionar a visualização da seguinte forma:
fonte
Uma maneira fácil de fazer isso dinamicamente é adicionar preenchimento às crianças . Você pode configurá-lo usando .setPadding () no objeto a ser adicionado. Este exemplo está adicionando um ImageView a um LinearLayout:
A imagem a seguir mostra dois ImageViews que foram adicionados com preenchimento:
fonte
Se o seu layout contiver etiquetas ou algum contêiner para texto. Você pode adicionar no final de cada texto "\ n" para dividir uma linha e criar espaço entre os elementos.
Exemplo:
fonte