我有一个编辑文本,用户输入金额。我想要做的是在它之前设置一个文本视图值,用户不能像“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"
答案 0 :(得分: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>
答案 1 :(得分:0)
您可以使用包含TextView(用于提示)的RelativeLayout和用于文本输入的EditText。 此代码显示示例:
<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>
答案 2 :(得分:0)
我的建议是使用背景图片来绘制您想要的文字。使用9补丁来限制用户可以输入的位置。这不是提示,但它可以解决您的问题。
答案 3 :(得分: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);
}
}
layout.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>
希望对后来者有帮助...