Android, unterstreichen die Farbe von einem EditText dynamisch

Ist es möglich, die Farbe der Unterstreichung von einem EditText dynamisch zu ändern? Wie die Wirkung, wenn ich es fokussiere, dann wird es in blau.

Hoffe, Sie verstehen, was ich tun möchte.

  • Wie bekomme ich programmatisch eine Liste von Farben von einem Farbverlauf auf Android
  • Android: Einfachste Möglichkeit, die Farbe einer png-Datei zu ändern
  • Android - Ändern Sie nur den Text von alpha TextView
  • Wie benutzerdefinierte ActionBar Farbe / Stil?
  • Ändern Sie die Farbe einer seekbar auf onProgressChanged
  • Wie ändern Sie die Farbe der Unterstreichung von Edittext auf 4.0+?
  • Android änderung Horizonal Fortschrittsbalkenfarbe
  • Android LinearLayout Selector Hintergrundfarbe
  • 3 Solutions collect form web for “Android, unterstreichen die Farbe von einem EditText dynamisch”

    Erstellen Sie Ihr eigenes, benutzerdefiniertes EditText-Steuerelement

    Hier ist ein Beispiel, das ich gerade für dich gemacht habe:

    Wenn Sie ausgewählt haben, müssen Sie mpaint.setColor (Color.GREEN) ändern; Zu einer anderen Farbe

    public class CustomEditText extends EditText{ private Rect mRect; private Paint mPaint; int widthMsSize; int heightMsSize ; // we need this constructor for LayoutInflater public CustomEditText(Context context, AttributeSet attrs) { super(context, attrs); mPaint = new Paint(); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(5); mPaint.setColor(Color.GREEN); System.out.println("constructor"); } protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) { // Extract the Ms (MesaureSpec) parameters widthMsSize = MeasureSpec.getSize(widthMeasureSpec); heightMsSize = MeasureSpec.getSize(heightMeasureSpec); System.out.println("on measure"); // Satisfy contract by calling setMeasuredDimension setMeasuredDimension(widthMsSize, heightMsSize); } protected void onDraw(Canvas canvas) { canvas.drawLine(5, heightMsSize-10, widthMsSize-5, heightMsSize-10, mPaint); //draw underline canvas.drawLine(8, heightMsSize-10,8, heightMsSize-20, mPaint); //draw left corner canvas.drawLine(widthMsSize-8, heightMsSize-10,widthMsSize-8, heightMsSize-20, mPaint); //draw right corner super.onDraw(canvas); } 

    }

    Main.xml

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.example.testanimationfadeinfadeout.CustomEditText android:id="@+id/textedit" android:layout_width="228dp" android:layout_height="41dp" android:ems="10" android:hint="color is changed" /> </LinearLayout> 
     public static void setEditTextUnderlineColor(final EditText editText, final int focusedColor, final int unfocusedColor) { editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { editText.getBackground().setColorFilter(focusedColor, PorterDuff.Mode.SRC_ATOP); return; } editText.getBackground().setColorFilter(unfocusedColor, PorterDuff.Mode.SRC_ATOP); } }); editText.getBackground().setColorFilter(unfocusedColor, PorterDuff.Mode.SRC_ATOP); 

    Um Text zu bearbeiten, habe ich den folgenden Weg gemacht. Es hat für mich ziemlich einfach gearbeitet.

     public class CardNumberText extends EditText { boolean isFocus; Paint mPaint; Rect mRect; int widthSize, heightSize; public CardNumberText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initStyle(); } private void initStyle() { mRect = new Rect(); mPaint = new Paint(); mPaint.setStyle(Paint.Style.STROKE); mPaint.setColor(Color.parseColor("#B3B3B3")); } public CardNumberText(Context context, AttributeSet attrs) { super(context, attrs); initStyle(); } public CardNumberText(Context context) { super(context); initStyle(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Rect rect = mRect; Paint paint = mPaint; if (isFocus) { mPaint.setStrokeWidth(3.0f); mPaint.setColor(Color.parseColor("#80CBC4")); } else { mPaint.setStrokeWidth(1.5f); mPaint.setColor(Color.parseColor("#B3B3B3")); } for (int i = 0; i < getLineCount(); i++) { int baseline = getLineBounds(i, rect); canvas.drawLine(rect.left, baseline + 20, rect.right, baseline, paint); } } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { super.onFocusChanged(focused, direction, previouslyFocusedRect); if (focused) { isFocus = true; } else { isFocus = false; } } } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.