繁体   English   中英

如何使用Seekbar更改Android Studio中应用程序的字体大小

[英]How to change font size of an app in android studio using seekbar

我正在尝试通过在创建的设置活动中使用搜索栏来更改整个应用程序的字体。 以下是到目前为止我从网上获得的内容,但是它仅更改了ID为“ changeFont”的少量文本:

// Fonts Scale Slider
fontScaleSlider = findViewById(R.id.fontScaleSlider);
view = findViewById(R.id.changeFont);

prefs = getPreferences(MODE_PRIVATE);

float fs = prefs.getFloat("fontsize", 10);
fontScaleSlider.setProgress((int)fs);
view.setTextSize(fontScaleSlider.getProgress());


fontScaleSlider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

    @Override
    public void onStopTrackingTouch(SeekBar fontScaleSlider){
        prefs = getPreferences(MODE_PRIVATE);
        SharedPreferences.Editor ed = prefs.edit();
        ed.putFloat("fontsize", view.getTextSize());
        ed.commit();
    }
    @Override
    public void onStartTrackingTouch(SeekBar fontScaleSlider) {

    }
    @Override
    public void onProgressChanged(SeekBar fontScaleSlider, int progress,
                                  boolean fromUser){
        view.setTextSize(progress);
        // Set text size of the whole app here
    }

和XML文件:

<SeekBar
            android:id="@+id/fontScaleSlider"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="13dp"
            android:layout_marginEnd="13dp"
            android:layout_marginBottom="82dp"
            android:max="30"
            app:layout_constraintBottom_toTopOf="@+id/logInButton"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/fontSliderLabel" />

在已实现的方法onProgressChanged中 ,可以将搜索栏值保存到共享的首选项中。

@Override
public void onProgressChanged(SeekBar fontScaleSlider, int progress,boolean fromUser){
    SharedPreferences.Editor ed = prefs.edit();
    ed.putInt("fontSize", progress);
    ed.apply();
}

然后使用保存的值设置活动开始时每个文本的文本大小

int textSize = prefs.getInt("fontSize", defaultValue); // put your default value here like 16
textView.setTextSize(textSize);
//similarly set the textsize for other views

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM