如何以编程方式设置TextView的边距?

时间:2013-03-26 11:51:00

标签: android textview

TextView tv1 = new TextView(this);      
tv1.setPadding(5, 0, 5, 0);
tv1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
tv1.setBackgroundColor(Color.parseColor("#0099cc"));
tv1.setTextColor(Color.WHITE);
tv1.setTextSize(11);
tv1.setGravity(Gravity.LEFT | Gravity.BOTTOM);
tv1.setText("Test1");
ll.addView(tv1);

TextView tv2 = new TextView(this);      
tv2.setPadding(5, 0, 5, 0);
tv2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
tv2.setBackgroundColor(Color.parseColor("#0099cc"));
tv2.setTextColor(Color.WHITE);
tv2.setTextSize(11);
tv2.setGravity(Gravity.LEFT | Gravity.BOTTOM);
tv2.setText("Test2");
ll.addView(tv2);

正如您所看到的,在这段代码中,我设置了TextView的背景色。我想要做的是我想将这两个TextView彼此分开,这样它们的背景颜色就会被一条线分开。我不希望他们连接。据我了解,如果我可以设置TextView的边距,就可以这样做,但据我所知,TextView无法这样做。

5 个答案:

答案 0 :(得分:101)

设置为LayoutParams。

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(10,10,10,10);
tv1.setLayoutParams(params);

答案 1 :(得分:4)

所有这些答案都很好,但是我使用的是ConstraintLayout,所以这是代码:

ConstraintLayout.LayoutParams params = new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(10, 10, 10, 10);
textview.setLayoutParams(params); // note that textview would be your instanced TextView object

答案 2 :(得分:3)

对于 Kotlin,请使用以下代码片段

(textView.layoutParams as ConstraintLayout.LayoutParams).apply {
        marginStart=8.dpToPixels()
        topMargin=8.dpToPixels()
        marginEnd=8.dpToPixels()
        bottomMargin=8.dpToPixels()
    }

根据使用的布局更改 LayoutParams。 谢谢。

答案 3 :(得分:1)

这取决于您的父视图。

如果您在TextView父视图上使用LinearLayout,请提供如下所示的参数

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(10,10,10,10);
tv1.setLayoutParams(params);

如果您在textview父视图上使用RelativeLayout,请提供以下参数

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.WRAP_CONTENT, RelativeLayout.WRAP_CONTENT);
params.setMargins(10,10,10,10);
tv1.setLayoutParams(params);

答案 4 :(得分:0)

应该尝试这个

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT);
        params.setMargins(10,20,30,20);
        txt_gender.setLayoutParams(params);