1

Say i have textview size is 18sp, if textview goes to second line, how to reduce textview size? any idea?

TextView text= (TextView)findViewById(R.id.text);
text.setTextSize(18);
//how to reduce text size if text goes to second line when it's too large?

Thanks in advance

Himanshu Agarwal
  • 4,623
  • 5
  • 35
  • 49
Shadow
  • 6,864
  • 6
  • 44
  • 93

2 Answers2

1

You can bind TextWatcher to you textView as done in following code snippet and listen for text changes in your textView.

...
txtView = (TextView)findViewById(R.id.txt);
txtView.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        @Override
        public void afterTextChanged(Editable s) {
            if(txtView.getLineCount() > 1){
                txtView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
            }
        }
});
...
KunalK
  • 1,904
  • 4
  • 22
  • 40
0

Use spannable as

String s= "Hello Everyone next line";
 SpannableString ss1=  new SpannableString(s);
 ss1.setSpan(new RelativeSizeSpan(2f), 0,13, 0); // set size of Hello Everyone
 ss1.setSpan(new RelativeSizeSpan(f), 14,23, 0);// set size of Next line
 TextView tv= (TextView) findViewById(R.id.textview);
 tv.setText(ss1); 
Android Priya
  • 686
  • 1
  • 6
  • 23