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(...);
无论 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>
我以编程方式创建了文本视图,并将其添加到我的布局中,但是我有一个 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(...);
无论 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>