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ように、はそうすることができません。

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);

テキストビューで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
}

変換のためIntdp、ここに別の拡張機能があります

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

この拡張機能を呼び出して、次のように水平マージン8dpを与えることができます。

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