Estoy agregando programáticamente vistas personalizadas a un LinearLayout vertical, y me gustaría que haya algo de espacio entre las vistas. He intentado agregar: setPadding (0, 1, 0, 1) a mi constructor CustomView, pero esto no parece tener ningún efecto. ¿Algún consejo?
* Se señaló que debería usar márgenes. Como estoy agregando vistas dinámicamente, necesito establecer los márgenes desde el código (no en xml). Creo que la forma de hacerlo es a continuación, pero no funciona.
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. También intenté usar MarginLayoutParams como parámetro al agregar las vistas al diseño lineal (como se muestra a continuación). Esto tampoco funcionó:
MarginLayoutParams params = new MarginLayoutParams(linearLayout.getLayoutParams());
linearLayout.setMargins(0, 10, 0, 10);
linearLayout.addView(view, params);
Respuestas:
Deberías
android:layout_margin<Side>
en los niños. El acolchado es interno.fuente
La solución API> = 11 :
Puede integrar el relleno en el divisor. En caso de que no estuvieras usando ninguno, solo crea un dibujo alto y vacío y configúralo como
LinearLayout
divisor:empty_tall_divider.xml:
fuente
GONE
. Al especificarandroid:showDividers="middle"
, solo obtendrá el espacio donde realmente lo necesita.Android ahora admite agregar una vista de espacio entre vistas. Está disponible desde 4.0 ICS en adelante.
fuente
El siguiente ejemplo solo hace lo que necesita programáticamente. He usado un tamaño fijo de (140,398).
fuente
Desde API Nivel 14, solo puede agregar un divisor (transparente) dibujable:
¡y se encargará del resto por ti!
fuente
8dp
de donde vino esto?Usar en
LinearLayout.LayoutParams
lugar deMarginLayoutParams
. Aquí está la documentación.fuente
LinearLayout.LayoutParams
se extiendeMarginLayoutParams
y hereda el mismosetMargins()
método que estaba utilizando arriba ...Si usa ActionBarSherlock , puede usar com.actionbarsherlock.internal.widget.IcsLinearLayout:
fuente
Uso de relleno en el diseño de Vista infantil.
layout.xml
backage_text.xml
fuente
Puede obtener el
LayoutParams
de padreLinearLayout
y aplicar a las vistas individuales de esta manera:fuente
Intente agregar el widget Space después de agregar una vista como esta:
fuente
Una manera fácil de hacerlo dinámicamente es agregar relleno a los niños . Puede configurarlo usando .setPadding () en el objeto que se va a agregar. Este ejemplo es agregar un ImageView a un LinearLayout:
La siguiente imagen muestra dos ImageViews que se han agregado con relleno:
fuente
Si su diseño contiene etiquetas o algún contenedor de texto. Puede agregar al final de cada texto "\ n" para dividir una línea y hacer espacio entre los elementos.
Ejemplo:
fuente