如何在“Android Flowlayout”中动态更改视图边距

时间:2016-10-01 20:45:05

标签: android

我有一个Android Flow布局hash_tag_layout

<org.apmem.tools.layouts.FlowLayout

    android:id="@+id/hash_tag_layout"

    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="@dimen/view_padding"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin">

</org.apmem.tools.layouts.FlowLayout>

问题是我无法更改动态添加视图的边距。

int pixels = convertDensityPixelsToPixels(5);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

lp.setMargins(0,0,pixels,pixels); //<---<< This line has no effect

TextView tv1 = new TextView(ctx);
tv1.setPadding(pixels,pixels,pixels,pixels); //int left top right bottom
tv1.setBackground(ctx.getResources().getDrawable(R.drawable.hash_tag_bubble_format));//drawable
tv1.setText("# Asd");
tv1.setLayoutParams(lp);
layout.addView(tv1);

如果我将hash_tag_layout布局更改为常规线性布局,则会获得边距!

 <LinearLayout

    android:id="@+id/hash_tag_layout"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

 </LinearLayout>

所以我首先要说明Android Flow布局不允许我为动态添加的视图添加边距!

知道如何更改源代码或找到解决方法吗?也许在动态添加的视图周围添加透明边框?

1 个答案:

答案 0 :(得分:0)

只需将您的LinearLayout.LayoutParams更改为FlowLayout.LayoutParams

Here是GitHub上的一个问题讨论。

我看到您3年前问了一个问题,但我也遇到了同样的问题:)