Android 以编程方式在文本视图之间填充

Android padding between textviews programmatically

我以编程方式创建了文本视图,并将其添加到我的布局中,但是我有一个 problem.i 不能在我的 textviews.this 和我的源代码之间填充

private class DigitView extends TextView {
    public DigitView(Context context) {
        this(context, null);
    }

    public DigitView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public DigitView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);


        // If selected draw the accent
        if (isSelected()) {
            this.setBackgroundResource(R.drawable.background_border);

        }
        else
        {
            this.setBackgroundResource(R.drawable.background_border_unselect);
        }

    }

}

这是我的 xml 代码(我在此布局中添加了我的文本视图)

 <LinearLayout
        android:id="@+id/my_Container_child"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
         >
    </LinearLayout>




  for (int i = 0; i < mDigits; i++) {
        digitView= new DigitView(getContext());
        digitView.setWidth(valueInPixels);
        digitView.setHeight(valueInPixels);
        digitView.setTextColor(Color.GREEN);
        digitView.setTextSize(mDigitTextSize);
        digitView.setGravity(Gravity.CENTER);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            digitView.setElevation(mDigitElevation);
        }
        childView.addView(digitView);
    }

正如我所说,我可以在我的布局中添加 4 个文本视图(mDigits 是 4),但我无法在我的文本视图之间添加填充 我该如何解决我的问题?如果有人知道解决方案请帮助我 谢谢大家

你试过了吗:

digitView.setPadding(...);

From Docs

无论 TextView 的父布局是什么,您都需要为每个 TextView 创建适当的 LayoutParams 对象。此外,您应该使用 layoutParams 作为宽度和高度,而不是直接在视图上设置它们。

LinearLayout layout = (LinearLayout) findViewById(R.id.my_Container_child);
for (int i = 0; i < mDigits; i++) {
    DigitView digitView = new DigitView(getContext());
    digitView.setTextColor(Color.GREEN);
    digitView.setTextSize(mDigitTextSize);
    digitView.setGravity(Gravity.CENTER);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        digitView.setElevation(mDigitElevation);
    }

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(valueInPixels, valueInPixels);
    if (i > 0) {
        lp.leftMargin = ...; // this adds space between this view and the previous one
    }
    layout.addView(digitView, lp);
}

编辑

或者,如果您在 LinearLayout 上使用可绘制的空白分隔线,则可以在没有 LayoutParams 的情况下执行此操作。

res/drawable/empty_divider.xml 中:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <size android:height="0dp" android:width="8dp" />
</shape>

在您的布局文件中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:showDividers="middle"
    android:divider="@drawable/ll_divider">

    <!-- ... -->

</LinearLayout>