为什么我不能在以编程方式添加linearlayout时应用保证金?

时间:2014-09-29 09:02:02

标签: android android-linearlayout margin

这里我在一个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);

1 个答案:

答案 0 :(得分:1)

试试这个,希望它能奏效。

LinearLayout.LayoutParams LLParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
LLParams.setMargins(marginDp, marginTopDp, marginDp, marginDp); 

<强> P.S 只是建议将dp转换为像素的方法,请尝试:)

private int dpToPx(int dp){

    float density = getResources().getDisplayMetrics().density;

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

}

相关问题