我要创建一个EditText,如下面的图像。
{{3}}
这是我的代码(在布局的xml文件中):
<EditText
android:id="@+id/newThoughtThoughtText"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="@drawable/lines"
android:gravity="top"
android:hint="@string/thought_first_text"
android:inputType="textMultiLine"
android:maxLines="15"
android:textColor="@color/color_gray" />
我创建了一个自定义可绘制布局文件。但是,这仅使我最后可以有一行,并且在EditText中需要几行。 我该怎么办?
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<stroke
android:width="1dp"
android:color="@color/color_gray" />
</shape>
</item>
</layer-list>
谢谢!
答案 0 :(得分:0)
要实现此目的,您必须在已创建的可绘制类中进行更改。
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="-2dp"
android:insetRight="-2dp"
android:insetTop="-2dp">
<shape android:shape="rectangle" >
<stroke
android:width="1dp"
android:color="#000000" />
<solid android:color="@color/md_grey_200" />
</shape>
</inset>
这将为您提供边框底部,您可以根据需要更改颜色。 如果不想给每个EditText加上边框,可以在每个EditText之后添加一个View。
<View
style="@style/MenuDivider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginEnd="5dp"
android:layout_marginStart="5dp"
android:layout_marginTop="15dp"
android:background="@color/black"/>
您可以根据自己的背景和背景更改视图高度。 希望对您有帮助。
答案 1 :(得分:0)
我设法解决了这个问题,并根据需要设计了editText。
这个话题对我有帮助:
Android - How to make all lines in an edittext underlined?
我创建了自己的自定义EditText:
package com.example.appsiety.utils;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import com.example.appsiety.R;
public class EditTextThought extends android.support.v7.widget.AppCompatEditText {
private Paint mPaint = new Paint();
private Context context;
public EditTextThought(Context context) {
super(context);
this.context = context;
initPaint();
}
public EditTextThought(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
initPaint();
}
public EditTextThought(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.context = context;
initPaint();
}
private void initPaint() {
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(ContextCompat.getColor(context, R.color.color_gray));
}
@Override protected void onDraw(Canvas canvas) {
int left = getLeft();
int right = getRight();
int paddingTop = getPaddingTop();
int paddingBottom = getPaddingBottom();
int paddingLeft = getPaddingLeft();
int paddingRight = getPaddingRight();
int height = getHeight();
int lineHeight = getLineHeight();
int count = (height-paddingTop-paddingBottom) / lineHeight;
for (int i = 0; i < count*2; i++) {
int baseline = lineHeight * (i+1) + paddingTop;
canvas.drawLine(left+paddingLeft, baseline, right-paddingRight, baseline, mPaint);
}
super.onDraw(canvas);
}
}
,然后在我的布局文件中使用它:
<view
class="com.example.appsiety.utils.EditTextThought"
android:id="@+id/newThoughtSituationText"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:scrollbars="vertical"
android:fadingEdge="vertical"
android:gravity="top"
android:textSize="18sp"
android:fontFamily="@font/opensans_light"
android:textColorHint="@color/color_gray"
android:textColor="@color/color_gray"
android:hint="@string/situation_first_text"
android:background="@android:color/transparent"
android:inputType="textMultiLine|textVisiblePassword"
/>