[英]How to create a custom EditText layout?
我想創建一個EditText像下面的圖像。
這是我的代碼(在布局的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>
提前致謝!
為此,您必須在已創建的可繪制類中進行更改。
<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"/>
您可以根據自己的背景和背景更改視圖高度。 希望這會幫助你。
我設法解決了這個問題,並根據需要設計了editText。
這個話題對我有幫助:
Android-如何使edittext中的所有行都加下划線?
我創建了自己的自定義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"
/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.