带有提示文本的EditText

时间:2017-02-02 10:32:47

标签: android android-edittext

我想要一个显示固定文本的EditText,如下面的显示。

enter image description here

2 个答案:

答案 0 :(得分:0)

尝试这个

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="horizontal">

<EditText
    android:id="@+id/editText2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:text="IN +91"/>

<EditText
    android:id="@+id/editText"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:layout_marginLeft="10dp"
    android:inputType="textPersonName"
    android:hint="Enter mobile number here"/>
</LinearLayout>

答案 1 :(得分:0)

请参阅此https://medium.com/@ali.muzaffar/adding-a-prefix-to-an-edittext-2a17a62c77e1#.y6uxyppam

public class PrefixEditText extends AppCompatEditText {
    float mOriginalLeftPadding = -1;

    public PrefixEditText(Context context) {
        super(context);
    }

    public PrefixEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

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

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

    private void calculatePrefix() {
        if (mOriginalLeftPadding == -1) {
            String prefix = (String) getTag();
            float[] widths = new float[prefix.length()];
            getPaint().getTextWidths(prefix, widths);
            float textWidth = 0;
            for (float w : widths) {
                textWidth += w;
            }
            mOriginalLeftPadding = getCompoundPaddingLeft();
            setPadding((int) (textWidth + mOriginalLeftPadding),
                        getPaddingRight(), getPaddingTop(),
                        getPaddingBottom());
        }
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        String prefix = (String) getTag();
        canvas.drawText(prefix, mOriginalLeftPadding,
                              getLineBounds(0, null), getPaint());
    }
}

用法:

<com.alimuzaffar.customwidgets.PrefixEditText
    fontPath="fonts/Lato-Light.ttf"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="bottom"
    android:textSize="24sp"
    android:tag="+61 "
    android:text="1234" />

OR

Android的电话号码与 - 标志 [https://github.com/dlukashev/android-phone-number-with-flags ][1]