假设布局文件中定义的textview的文本大小为12sp,我动态地将其更改为24sp。但是当我旋转屏幕时,textsize将更改回12sp。无论如何都要保留配置更改时在运行时设置的LayoutParams?
答案 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&我将它添加到上面。