簡體   English   中英

如何創建自定義EditText布局?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM