以编程方式在textviews之间填充Android

时间:2015-10-13 15:30:29

标签: android textview padding

我以编程方式创建了textviews并将其添加到我的布局中,但我有一个问题。我无法在我的textviews之间填充。这是我的来源

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个textview(mDigits为4)但我无法在我的textviews之间添加填充 我怎么能解决我的问题?如果有人知道解决方案,请帮助我 谢谢大家

2 个答案:

答案 0 :(得分:1)

无论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);
}

修改

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

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>

答案 1 :(得分:0)

你有没有试过这个:

digitView.setPadding(...);

From Docs