Search code examples
androidandroid-studiotextview

TextView not zooming out


I have an activity in my app where i have two textviews and two buttons for zooming in and zooming out respectively. Zoom in seems to work just fine but zoom out works opposite, it zooms in instead of zooming out. Here is the code

 ibzoomout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                float s1 = tv1.getTextSize();
                float s2 = tv2.getTextSize();
                s1 = s1-5;
                s2 = s2-5;
                tv1.setTextSize(s1);
                tv2.setTextSize(s2);
            }
        });

ibzoomin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                float s1 = tv1.getTextSize();
                float s2 = tv2.getTextSize();
                s1 = s1+5;
                s2 = s2+5;
                tv1.setTextSize(s1);
                tv2.setTextSize(s2);
            }
        });

tv1 and tv2 are textviews and ibzoomin and ibzoomout are buttons.


Solution

  • As I can see, you want to zoom in/out the both of TextView, I've created the below code, might be helpful for you :

       ibzoomout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                float s1 = tv1.getTextSize();
                float sp1 = s1 / getResources().getDisplayMetrics().scaledDensity;
    
                float s2 = tv2.getTextSize();
                float sp2 = s2 / getResources().getDisplayMetrics().scaledDensity;
    
                tv1.setTextSize(decreaseSize(sp1));
                tv2.setTextSize(decreaseSize(sp2));
            }
        });
        ibzoomin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                float s1 = tv1.getTextSize();
                float sp1 = s1 / getResources().getDisplayMetrics().scaledDensity;
    
                float s2 = tv2.getTextSize();
                float sp2 = s2 / getResources().getDisplayMetrics().scaledDensity;
    
                tv1.setTextSize(increaseSize(sp1));
                tv2.setTextSize(increaseSize(sp2));
            }
        });
    
    
        public Float increaseSize(float diff) {
            size = diff + 5;
            return size;
        }
    
        public Float decreaseSize(float diff) {
            size = diff - 5;
            return size;
        }