如何在配置更改后恢复以编程方式更改的 LayoutParams

How to restore programmatically changed LayoutParams after configuration changes

假设布局文件中定义的textview的textsize是12sp,我动态改成24sp,但是当我旋转屏幕时,textsize又变回12sp。无论如何要保留配置更改时 运行 时间设置的 LayoutParams?

您好 user3591494,您可以使用 android 保存和恢复您的文本大小。将以下代码添加到您的 activity。

private final String TEXT_SIZE_KEY = "text_size";

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // save text view size
    savedInstanceState.putFloat(TEXT_SIZE_KEY, yourTextView.getTextSize());
    super.onSaveInstanceState(savedInstanceState);
}

然后在你的 activity 像这样恢复后恢复你的 textSize

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);

    // restore your text size and set to your text view
    float textSize = savedInstanceState.getFloat(TEXT_SIZE_KEY);
    yourTextView.setTextSize(textSize);
}

再次嗨,抱歉,您的评论回答太大,无法 posted。该方法将是相同的。因此,当您调用 linearLayout.LayoutParams(0,MATCH_PARENT, 1f)) 时,如果您将鼠标悬停在该函数上,您将看到您调用的是 linearLayout.LayoutParams(int, int, float) 参数宽度、高度和重量。因此,使用相同的方法使用 savedInstanceState.putInt(FRAME_A_WIDTH, yourLayout.getLayoutParams().width) 将 3 个值存储在 bundle 中,并在 onRestoreInstanceState() 函数中使用相同的方法恢复它。不要在您的文本视图上调用 yourTextView.setTextSize(textSize) ,只需在您的视图上调用 setLayoutParams 并恢复值。如果您需要此问题的代码片段,请告诉我,post 您的 xml,我会在上面添加它。