我以编程方式创建了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之间添加填充 我怎么能解决我的问题?如果有人知道解决方案,请帮助我 谢谢大家
答案 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)