2012-01-04 14 views
2

ToggleButtonチェック状態を切り替えると、ウィジェットのサイズが変わります。たとえば、textOnの値が「true」で、textOffの値が「あとで私に電話してもらえない」場合、チェックされた状態の切り替えにより、ボタンの幅が大幅に変更されます。ToggleButtonの幅をtextOnとtextOffの値の幅に設定するにはどうすればよいですか?

ToggleButtonの幅をtextOntextOffで作成された2つのコンテンツラップ幅の最大値に設定するとよいでしょう。

定数を維持するための好ましい方法はありますかToggleButton幅ですか? getWidth()を呼び出し、toggle()を、次にgetWidth()をもう一度呼び出すのが最善の方法ですか?

答えて

2

ボタンが2つの文字列で構成されているため、大きな文字列に従ってXML自体の幅を指定することには問題ありません。

しかし、あなたは、文字列の幅を計算する場合、それは簡単です:

​​

これはあなたにそれが画面上にかかる文字列の幅を提供します。トグルボタンの幅をLayoutParamsで設定します。

あなたのトグルボタンの親レイアウトはLinearLayoutです。
ですので、次のようにしてください:
toggleButton.setLayoutParams(新しいLayoutParams(LineWLayout.LayoutParams.WRAP_CONTENT));

これは、ToggleButtonの幅と高さを計算した値に設定します。

+0

私の回答を編集しました。役立つかどうかを確認しました。 – akkilis

3

私のトグルボタンにはこれが必要で、少し改良が加えられました。 レイアウト設定を削除して、パディングを含めました。パディングを考慮しない場合、文字列はボタンの中にラップされます。

ToggleButton tglBtn = (ToggleButton) view.findViewById(R.id.toggleBtn); 
    tglBtn.setWidth((int) tglBtn.getPaint().measureText("Longest String")+tglBtn.getPaddingLeft()+tglBtn.getPaddingRight()); 
+0

ほとんどの文字(最も長い文字列)を持つテキストは、必ずしも最大の幅を持つテキストであるとは限りません。たとえば、「iiiiiii」対「MMMM」を参照してください。 – Thorbear

関連する問題