TextView не уменьшает масштаб

#android #android-studio #textview

#Android #android-studio #textview

Вопрос:

У меня есть действие в моем приложении, где у меня есть два textviews и две кнопки для увеличения и уменьшения масштаба соответственно. Увеличение, кажется, работает просто отлично, но уменьшение работает наоборот, оно увеличивает масштаб вместо уменьшения. Вот код

  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 и tv2 — это текстовые представления, а ibzoomin и ibzoomout — это кнопки.

Ответ №1:

Как я вижу, вы хотите увеличивать / уменьшать масштаб обоих TextView , я создал приведенный ниже код, который может быть полезен для вас :

    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;
    }
  

Комментарии:

1. Большое спасибо @Mouaad, это сработало. не могли бы вы объяснить, что было не так с моим кодом?