2017-05-14 13 views
0

レイアウトファイルで定義されているtextviewのtextsizeが12spだとしたら、動的に24sp .butに変更したとします。設定が変更されたときに実行時に設定されているLayoutParamsを保持することはありますか?設定変更後にプログラムで変更されたLayoutParamsを復元する方法

+0

あなたの目的に最も適した 'SavedInstance'または' SharedPreference'を使う必要があります。 –

+0

詳細はこちら - > https://developer.android.com/guide/topics/resources/runtime-changes.html –

答えて

2

こんにちはuser3591494あなたはアンドロイドでテキストサイズを保存して復元できます。あなたの活動に以下のコードを追加してください。あなたの活動は再びこの

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

こんにちはのように復元した後

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を復元、あなたのコメントへの申し訳ありません答えが掲載されるには大きすぎます。アプローチは同じです。したがって、関数にカーソルを置くとlinearLayout.LayoutParams(0、MATCH_PARENT、1f)を呼び出すと、width、height、およびweightというパラメータがlinearLayout.LayoutParams(int、int、float)であることがわかります。したがって、同じアプローチを使用すると、3つの値をsavedInstanceState.putInt(FRAME_A_WIDTH、yourLayout.getLayoutParams()。width)を使用してバンドルに格納し、onRestoreInstanceState()関数で同じアプローチを使用して復元します。テキストビューでyourTextView.setTextSize(textSize)を呼び出す代わりに、復元された値でビュー上でsetLayoutParamsを呼び出すだけです。この質問のコードスニペットが必要な場合はお知らせください。& xmlを投稿してください。上記に追加します。

+0

テキストサイズでない場合はどうなりますか?もしそれがビューの高さの幅なら、LinearLayoutには2つのフレームレイアウトがあります。 framelayout1とframelayout2の幅と高さが両方ともMATCH_PARENTで、framelayout2の幅が0で、高さがMATCH_PARENTです.I 2つのフレームレイアウトのLayoutParamsをプログラムによって変更します:FrameLayout1.setLayoutParams(new linearLayout.LayoutParams(0、MATCH_PARENT、1f) ); \t \t FrameLayout2.setLayoutParams(new LinearLayout.LayoutParams(0、MATCH_PARENT、2f)); 画面を回転させると、どのようにLayoutParamsを復元できますか? – user3591494

+0

こんにちはuser3591494、私は私の答えのコメントを更新するにはスタックの限界として投稿するには長すぎます。 –

関連する問題