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

51 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);
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,在这个代码的平静中,我设置了TextView背景颜色.我想要做的是我想将它们彼此分开TextView,这样它们的背景颜色就会被一条线分开.我不希望他们连接.据我了解,如果可以设定利润率,就有可能这样做TextView,但据我所知,TextView我们无法做到这一点.

dmn*_*nlk 115

设置为LayoutParams.

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(10,10,10,10);
tv1.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)

  • 在哪个单位,它将设置保证金,意味着在dp,px,sp或其他什么? (7认同)
  • 出于某种原因,我得到一个警告,这需要min api lvl 19才有意义吗? (2认同)
  • @Cigogne Eveillée 在上述情况下,由于创建了新的 params 对象,因此需要它。如果从textview获取params,那么是的,你所说的是正确的:tv1.getlayoutParams().set..() (2认同)

Gee*_*moy 8

对于 Kotlin 使用以下代码片段

(textView.layoutParams as ConstraintLayout.LayoutParams).apply {
        marginStart=8.dpToPixels()
        topMargin=8.dpToPixels()
        marginEnd=8.dpToPixels()
        bottomMargin=8.dpToPixels()
    }
Run Code Online (Sandbox Code Playgroud)

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


Md *_*hid 8

在 Kotlin 中我确实喜欢这样:

    binding.playBtn.updateLayoutParams<ViewGroup.MarginLayoutParams> {
        setMargins(0,16,0,0) //parameters are in pixel
    }
    binding.playBtn.setPadding(10)
Run Code Online (Sandbox Code Playgroud)


Emr*_*kin 6

这取决于你父母的看法。

如果您在 textview 上使用 LinearLayout 作为父视图,请提供如下参数

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(10,10,10,10);
tv1.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)

如果您在 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);
Run Code Online (Sandbox Code Playgroud)


Eli*_*ock 6

所有这些答案都很好,但我使用的是 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
Run Code Online (Sandbox Code Playgroud)