【问题标题】:EditText with hint text [duplicate]带有提示文本的 EditText [重复]
【发布时间】:2017-06-19 09:13:02
【问题描述】:

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

【问题讨论】:

标签: android android-edittext


【解决方案1】:

试试这个

<?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>

【讨论】:

  • 这值得感谢。@anand
  • @NidhiSuthar Easy j hatu.. :)
【解决方案2】:

参考这个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" />

android-phone-number-with-flags [https://github.com/dlukashev/android-phone-number-with-flags

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2020-12-09
    • 2018-05-04
    • 2013-12-13
    • 1970-01-01
    相关资源
    最近更新 更多