4

我有一个编辑文本,用户在其中输入金额。我想要做的是在它之前设置一个用户无法编辑的 textview 值,如“INR”,然后用户将在它前面输入金额。我希望 edittext 看起来像下面的。我怎样才能做到这一点?

在此处输入图像描述

<EditText
        android:id="@+id/Eamnt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="180dp"
        android:ems="10"
        android:inputType="numberDecimal"
4

4 回答 4

15

尝试使用包含 TextView 和 EditText 的 RelativeLayout。我在下面做了一些事情,试试看。

<RelativeLayout
  android:layout_width="match_parent"
  android:layout_height="50dp"
  android:background="@android:drawable/editbox_background" >

<TextView 
    android:id="@+id/constant_text"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:gravity="center_vertical|center_horizontal"
    android:textStyle="bold"
    android:textColor="#C0C0C0"
    android:text="INR"
    android:background="@android:color/transparent" />

<EditText 
    android:id="@+id/amount"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_toRightOf="@+id/constant_text"
    android:textColor="#000000"
    android:textStyle="bold"
    android:background="@android:color/transparent"
    android:paddingLeft="5dp"
    android:text="100 000" />


</RelativeLayout>
于 2012-10-30T08:20:06.950 回答
0

您可以使用包含 TextView(用于提示)和 EditText 的 RelativeLayout 用于文本输入。此代码显示了示例:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ll_parent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="PasswordHint"
        android:textColor="#aaaaaaaa"
        android:textSize="30dip" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView1"
        android:layout_alignBottom="@+id/textView1"
        android:layout_alignParentLeft="true"
        android:background="#00000000"
        android:textSize="30dip" >

    </EditText>

</RelativeLayout>
于 2012-10-30T08:37:57.873 回答
0

我的建议只是使用背景图片,它可以绘制您想要的文字。使用 9-patch 来限制用户可以输入的位置。这不是提示,但可以解决您的问题。喜欢这个,希望对你有帮助

于 2012-10-30T08:54:54.450 回答
0

MyEditText.java

package com.example.myapplication24.UI;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;

import com.example.myapplication24.R;

public class MyEditText extends androidx.appcompat.widget.AppCompatEditText {
    private String mhint = "";
    private Paint mPaint;
    private Context mContext;
    private float paddingLeft = 0 ;

    public MyEditText(Context context) {
        super(context);
        this.mContext = context;
        init();
    }

    public MyEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.mContext = context;
        init();
        TypedArray a = mContext.obtainStyledAttributes(attrs,R.styleable.MyEditText);
        mhint = a.getString(R.styleable.MyEditText_mhint);
        setPadding((int)(mPaint.measureText(mhint)),getPaddingTop(),getPaddingRight(),getPaddingBottom());
        a.recycle();
    }

    public MyEditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.mContext = context;
        init();
        TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.MyEditText,defStyleAttr,0);
        mhint = a.getString(R.styleable.MyEditText_mhint);
        setPadding((int)(mPaint.measureText(mhint)),getPaddingTop(),getPaddingRight(),getPaddingBottom());
        a.recycle();

    }
    private void init() {
        mPaint = new Paint();
        mPaint.setTextSize(getTextSize());
        mPaint.setColor(Color.GRAY);
        paddingLeft = getPaddingLeft();
    }

    private int dp2px(float dp) {
        return (int) (mContext.getResources().getDisplayMetrics().density * dp + 0.5f);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        //Drawing mhint
        canvas.drawText(mhint,dp2px(5),getHeight()*0.65f,mPaint);


        super.onDraw(canvas);
    }



}

布局.xml

<com.example.myapplication24.UI.MyEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:mhint="Username: "
        android:text="asd"
        ></com.example.myapplication24.UI.MyEditText>

attrs.xml

    <!--my hint-->
    <attr name="mhint" format="string"/>

    <declare-styleable name="MyEditText">
        <attr name="mhint"/>

    </declare-styleable>

</resources>

希望对后来者有所帮助...

演示

于 2020-03-11T07:04:45.557 回答