如何在配置更改后以编程方式还原LayoutParams

时间:2017-05-14 05:15:43

标签: android textview layoutparams

假设布局文件中定义的textview的文本大小为12sp,我动态地将其更改为24sp。但是当我旋转屏幕时,textsize将更改回12sp。无论如何都要保留配置更改时在运行时设置的LayoutParams?

1 个答案:

答案 0 :(得分:2)

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

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

然后在您的活动恢复后恢复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);
}

嗨再次,抱歉回答你的评论太大了,无法发布。方法将是相同的。所以当你调用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。如果您需要此问题的代码段,请告诉我们,发布您的xml&我将它添加到上面。