尝试使用Label创建EditText而不移动标签

时间:2014-06-18 15:20:47

标签: android android-layout

我正在尝试创建一个EditText,其中包含EditText内的标签 ,并且我一直在使用接受回答here的第二个建议。

我设法让它运转起来,但有一些问题。以下是目前的情况:

First Screenshot

没关系,直到你尝试输入一些文字。最初,标签和输入的文本之间没有边距:

Second Screenshot

此外,使用退格键无法删除标签,但当您输入足够的文本以将其从左侧推出时,它确实会消失:

Third Screenshot

这是我的自定义EditText的代码 - 几乎与上面提到的线程相同:

public class KingdomSpasEditText extends EditText {

    private int paddingLeft;
    private String label = "";

    public KingdomSpasEditText(Context context) {
        super(context);
        paddingLeft = getPaddingLeft();
    }

    public KingdomSpasEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        paddingLeft = getPaddingLeft();
        label = attrs.getAttributeValue("http://www.kingdomspas.com/android/custom", "label");
        if (label == null) {
            label = "";
        }
    }

    protected void onDraw(Canvas canvas) {
        TextPaint textPaint = getPaint();
        Rect size = new Rect();
        textPaint.getTextBounds(label, 0, label.length(), size);
        setPadding(paddingLeft + size.width(), getPaddingTop(), getPaddingRight(), getPaddingBottom());
        super.onDraw(canvas);
        canvas.drawText(label, paddingLeft + size.left, size.bottom + getPaddingTop() + 50, textPaint);
    }


    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }




}

您可能会注意到在drawText()中我向顶部填充添加了50。如果我不是这样的话:

Fifth Screenshot

这对我来说似乎是个黑客。

以下是用于创建每个EditText的XML - 唯一的区别是标签。它们都在TableRow中,显然是TableLayout的一部分:

<com.kingdomspas.android.kingdomspasforms.formfields.KingdomSpasEditText
                android:id="@+id/editText1" android:layout_width="fill_parent"
                android:layout_height="wrap_content" android:maxLines="1"
                android:singleLine="true" android:background="@drawable/round" 
                android:paddingTop="2dp"
                android:paddingLeft="8dp"
                android:layout_weight="1"
                kingdomspas:label="Test Text 1: ">

                <requestFocus />
            </com.kingdomspas.android.kingdomspasforms.formfields.KingdomSpasEditText>
好的,谢谢你坚持下去。以下是我的问题摘要:

1)如何在标签和输入的文本之间创建边距? 2)如何防止标签消失在右边? 3)在Edittext

中是否有更好的标签方式

0 个答案:

没有答案