Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么可以';在以编程方式添加linearlayout时是否应用边距?_Android_Android Linearlayout_Margin - Fatal编程技术网

Android 为什么可以';在以编程方式添加linearlayout时是否应用边距?

Android 为什么可以';在以编程方式添加linearlayout时是否应用边距?,android,android-linearlayout,margin,Android,Android Linearlayout,Margin,在这里,我在另一个linearlayout中以编程方式在一个linearlayout中添加一个textview。但是,即使我设置了边距,也无法将边距应用于线性布局 LinearLayout LL = new LinearLayout(TimeTableAdvanced.this); LL.setBackgroundColor(getResources().getColor(R.color.menublue)); LL

在这里,我在另一个linearlayout中以编程方式在一个linearlayout中添加一个textview。但是,即使我设置了边距,也无法将边距应用于线性布局

LinearLayout LL = new LinearLayout(TimeTableAdvanced.this);
                    LL.setBackgroundColor(getResources().getColor(R.color.menublue));
                    LL.setOrientation(LinearLayout.VERTICAL);
                    LL.setGravity(Gravity.TOP);
                    LayoutParams LLParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);

                    int marginPixel = 3;
                    float density = TimeTableAdvanced.this.getResources().getDisplayMetrics().density;
                    int marginDp = (int)(marginPixel * density);

                    int marginTopPixel = 3;
                    int marginTopDp = (int)(marginTopPixel * density);

                    LLParams.setMargins(marginDp, marginTopDp, marginDp, marginDp);                 
                    LL.setLayoutParams(LLParams);

                    int paddingPixel = 3;
                    int paddingDp = (int)(paddingPixel * density);
                    LL.setPadding(paddingDp,paddingDp,paddingDp,paddingDp);

                    TextView infoheader = new TextView(TimeTableAdvanced.this);
                    infoheader.setText(getResources().getString(R.string.departuretimesfromfirstbusstop));
                    infoheader.setTextColor(getResources().getColor(R.color.white));
                    infoheader.setTextSize(14.0f);
                    LLParams = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);

                    marginPixel = 5;
                    marginDp = (int)(marginPixel * density);

                    LLParams.setMargins(marginDp, 0, 0, 0);                 
                    infoheader.setLayoutParams(LLParams);

                    LL.addView(infoheader);

                    timetablelayout.addView(LL);

试试这个,希望它能起作用

LinearLayout.LayoutParams LLParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
LLParams.setMargins(marginDp, marginTopDp, marginDp, marginDp); 
p.S 只是建议将dp转换为像素的方法,试试看:)

专用int dpToPx(int dp){


}

试试这个……希望能奏效。。LinearLayout.LayoutParams LLParams=新的LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL\u父级,LinearLayout.LayoutParams.WRAP\u内容);LLParams.setMargins(marginDp、marginTopDp、marginDp、marginDp);尝试使用LinearLayout.LayoutParams代替LayoutParams
    float density = getResources().getDisplayMetrics().density;

    return Math.round((float) dp * density);