88
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' s 不能这样做。

4

6 回答 6

171

设置为 LayoutParams。

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(10,10,10,10);
tv1.setLayoutParams(params);
于 2013-03-26T11:55:15.167 回答
8

这取决于您的父母观点。

如果您在 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.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(10,10,10,10);
tv1.setLayoutParams(params);
于 2019-01-24T12:52:19.313 回答
5

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

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

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

于 2021-03-06T11:39:32.183 回答
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
于 2020-01-13T03:56:33.743 回答
1

这个应该试试

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT);
        params.setMargins(10,20,30,20);
        txt_gender.setLayoutParams(params);
于 2017-09-14T12:19:49.250 回答
0

使用 Kotlin 扩展:

这是为 textview 设置边距的简单扩展。

fun View.setMargins(marginLeft: Int, marginTop: Int, marginRight: Int, marginBottom: Int) {
  val params: LinearLayout.LayoutParams =
    LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
  params.setMargins(margin.dp, 0, margin.dp, 0)
  this.layoutParams = params
}

对于Int转换dp,这是另一个扩展

val Int.dp: Int
  get() = (this * Resources.getSystem().displayMetrics.density).toInt()

您可以调用此扩展程序以提供水平边距 8dp,如下所示

yourTextView.setMargins(8, 0, 8, 0)
于 2021-09-20T16:14:16.187 回答