LLL
LLL

Reputation: 658

Change TextSize of focussed EditText in android

Can any of you show me the best way to change the TextSize attribute of an EditText just when the user has it selected (is writing)?

This is what i accomplished so far:

I've two EditText in a linear layout.

xml:

<EditText
   android:textSize="20dp"
   android:onClick="makeTextViewFocusedBigger"/>
<EditText
   android:textSize="20dp"
   android:onClick="makeTextViewFocusedBigger"/>

activity:

public void makeTextViewFocusedBigger(View view) {
   ((EditText) view).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 25);
}

When the user select it it does become bigger, but obviously it does not go back to the original size when the user stop using it.

What would you do to realize this function?

Upvotes: 1

Views: 1723

Answers (6)

Neha Mehta
Neha Mehta

Reputation: 181

You need to implement View.OnFocusChangeListener(). This method is called when the focus state of a view has changed.

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if(hasFocus)
        {
           // Change size when editText has focus
           editText.setTextSize(30);
        }else
        {
             // Change size when editText doesn't has focus
             editText.setTextSize(15);
        }
    }
});

Upvotes: 2

Steffen Vangsgaard
Steffen Vangsgaard

Reputation: 530

You need to addFocusChangedListener to your EditTexts. In them you can see if they are focused or not.

Upvotes: 1

Zaid Mirza
Zaid Mirza

Reputation: 3691

Do following :

XML:

  <EditText
       android:textSize="20dp"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:id="@+id/edit_text_first"/>
    <EditText
       android:textSize="20dp"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:id="@+id/edit_text_second"/>

Activity OnCreate:

 EditText editFirst=findViewById(R.id.edit_first)

 EditText editSecond=findViewById(R.id.edit_second)

editFirst.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
       // Change size of text inside 1st EditText
    }
});

editSecond.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
       // Change size of text inside 2nd EditText
    }
});

To implement it more general :

 public class MainActivity extends AppCompatActivity implements View.OnFocusChangeListener{ 


    @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);


            setContentView(R.layout.activity_main);
            editFirst.setOnFocusChangeListener(this);

            editSecond.setOnFocusChangeListener(this);

    }



    @Override
    public void onFocusChange(View v, boolean hasFocus) 
        {
            // Change text size of every EditText or for selective EditText. As You want
            }
}

Upvotes: 2

sandeep kolhal
sandeep kolhal

Reputation: 423

Use setOnFocusChangeListener

Like This :

Your_Edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(hasFocus)
                {
                    Your_Edittext.setTextSize(25); //increased size
                }
                else
                {
                    Your_Edittext.setTextSize(15); //normal size
                }
            }
        });

Upvotes: 2

Hemant Parmar
Hemant Parmar

Reputation: 3976

You have to implementView.OnFocusChangeListener() method , set the textview size according you want in onFocusChange()

myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
      // set the text size here
    }
});

Upvotes: 1

Ahmed Hegazy
Ahmed Hegazy

Reputation: 12605

Use View.OnFocusChangedListener

myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
       // Change size based on hasFocus boolean
    }
});

Upvotes: 2

Related Questions