Estou tentando criar TableRow
objetos dinamicamente e adicioná-los a um TableLayout
. Os TableRow
objetos têm 2 itens, a TextView
e a CheckBox
. Os TextView
itens precisam ter seu peso de layout definido como 1 para empurrá- CheckBox
los para a extrema direita.
Não consigo encontrar documentação sobre como definir programaticamente o peso do layout de um TextView
item.
TextView tv = (TextView) findViewById(R.id.your_textview_inside_the_linearlayout); tv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.1f));
TableRow.LayoutParams
deve ser usado em vez deTableLayout.LayoutParams
. Veja a resposta de @ Dorje.A resposta é que você precisa usar TableRow.LayoutParams, não LinearLayout.LayoutParams ou qualquer outro LayoutParams.
Os diferentes LayoutParams não são intercambiáveis e, se você usar o errado, nada parece acontecer. O pai da exibição de texto é uma linha da tabela, portanto:
http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html
fonte
LayoutParams
TableRow.LayoutParams
fez o trabalho para mim tambémNas respostas anteriores, o peso é passado para o construtor de um novo objeto SomeLayoutType.LayoutParams. Ainda em muitos casos, é mais conveniente usar objetos existentes - isso ajuda a evitar lidar com parâmetros nos quais não estamos interessados.
Um exemplo:
fonte
1f é denotado como peso = 1; você pode dar 2f ou 3f, as visualizações serão movidas de acordo com o espaço
fonte
basta definir parâmetros de layout nesse layout, como
criar variável param
1f é variável de peso
defina seu widget ou layout como
fonte
LinearLayout.LayoutParams
construtor. O terceiro parâmetro é peso. Ou documentação(OU)
1f é referido como peso = 1; de acordo com sua necessidade, você pode fornecer 2f ou 3f, as visualizações serão movidas de acordo com o espaço. Para determinar a distância especificada entre as vistas no layout Linear, use a soma de pesos para "LinearLayout".
fonte
Isso deve funcionar para você
fonte
Você também pode dar peso separadamente assim,
fonte
Este trabalho para mim, e espero que funcione para você também
Defina os LayoutParams para a visualização principal primeiro:
defina para o TextView (filho):
fonte
Existe outra maneira de fazer isso. Caso você precise definir apenas um parâmetro, por exemplo 'height':
fonte
Depois de lutar por 4 horas. Finalmente, este código funcionou para mim.
3 colunas existem em uma linha.
fonte
Eu tive bastante dificuldade com uma solução, algo muito parecido com isso: tentar ter dois botões em um TableRow, cada um com metade da largura da tela. Por qualquer motivo, o botão esquerdo sempre terá cerca de 70% da largura e o botão direito 30%. Chamar table_layout.setStretchAllColumns (true) não teve efeito, nem definiu a largura do botão para metade da tela, nem definiu o peso do layout.
A solução que eu acabei com foi aninhar um LinearLayout nas TableRows, que se levem em conta o valor da largura dos botões.
fonte
layout_width=fill_parent
, e depois disso, defina olayout_weight=1
botão1 e o button2. Todos os elementos com fill_parent e um layout_weight = 1 terão um tamanho igual após a inflação.