Android 如何以编程方式在LinearLayout中添加边距/填充?

Android 如何以编程方式在LinearLayout中添加边距/填充?,android,Android,我试图将填充设置为线性布局,这样当我按下“创建行”时,它们之间会有一个间隙 我尝试将marginTop和marginBottom添加到我的LinearLayout中,但当我运行代码时,布局仍然同时生成。与我设定的边距没有差距 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="v

我试图将填充设置为线性布局,这样当我按下“创建行”时,它们之间会有一个间隙

我尝试将
marginTop
marginBottom
添加到我的
LinearLayout
中,但当我运行代码时,布局仍然同时生成。与我设定的边距没有差距

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/verticalLayout"
        android:layout_below="@id/button"
        android:background="@color/colorPrimaryDark"
        android:layout_marginTop="50dp"
        >

将边距添加到水平布局而不是垂直布局中。检查以下代码:

private void createRow() { 

        horizontalLayout = new LinearLayout(this);

        LinearLayout.LayoutParams horizontalParams = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);

        horizontalParams.topMargin = 20;  //add margin here.

        horizontalLayout.setOrientation(LinearLayout.HORIZONTAL);
        horizontalLayout.setLayoutParams(horizontalParams);

        createSpinner();
        createCheckbox();
        createEditText();

        verticallayout.addView(horizontalLayout);
    }
试试这个代码

    private void createRow() { //got

        horizontalLayout = new LinearLayout(this);

        LinearLayout.LayoutParams horizontalParams = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        horizontalLayout.setOrientation(LinearLayout.HORIZONTAL);
        horizontalParams.setMargins(15, 5, 15, 5); // LEFT, TOP, RIGHT, BOTTOM
        horizontalLayout.setLayoutParams(horizontalParams);
horizontalLayout.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorPrimaryDark));

        createSpinner();
        createCheckbox();
        createEditText();

        verticallayout.addView(horizontalLayout, horizontalParams);
    }

希望对您有用。:)

添加用于以编程方式添加视图的方法。在post中编辑。您正在创建一个新的
线性布局
,而不是从xml膨胀。以编程方式添加视图时,您没有添加任何边距。您意识到在视图上添加边距会将视图上的边距放在其父视图内,对吗?因此,将边距应用于垂直布局不会将边距添加到其子视图边距应添加到子视图,而不是也不起作用的父视图:/布局仍然连接在一起。它们之间没有空格张贴新的屏幕截图。@Magic_Whizz请添加createSpinner();createCheckbox();createEditText();这些函数代码also@Magic_Whizz创建问题什么是问题?用getContext()替换它是的兄弟我在我的答案中添加了代码检查我的答案你会发现新行setBackgroundColor
    private void createRow() { //got

        horizontalLayout = new LinearLayout(this);

        LinearLayout.LayoutParams horizontalParams = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        horizontalLayout.setOrientation(LinearLayout.HORIZONTAL);
        horizontalParams.setMargins(15, 5, 15, 5); // LEFT, TOP, RIGHT, BOTTOM
        horizontalLayout.setLayoutParams(horizontalParams);
horizontalLayout.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorPrimaryDark));

        createSpinner();
        createCheckbox();
        createEditText();

        verticallayout.addView(horizontalLayout, horizontalParams);
    }