2012-01-04 132 views
2

當選中的狀態切換時,A ToggleButton小部件會更改大小。例如,如果textOn值爲「true」並且textOff值爲「不確定以後再打電話」,則選中的狀態切換會導致按鈕寬度發生顯着變化。如何將ToggleButton寬度設置爲更寬的textOn和textOff值?

ToggleButton的寬度設置爲由textOntextOff創建的兩個內容包裝寬度的最大值將會很好。

有沒有優選的方法來保持恆定的ToggleButton寬度?是最好的方法,只需撥打getWidth(),然後toggle(),然後再getWidth()

回答

2

因爲它只有兩個字符串的按鈕,所以根據較大的字符串在XML本身中提供寬度沒有任何壞處。

但是,如果你要計算的字符串的寬度,這很簡單:

​​

這給了你,將採取在屏幕上的字符串的寬度。現在通過LayoutParams設置切換按鈕的寬度。

可以說您的切換按鈕的父佈局是LinearLayout。
所以它應該像這樣:
toggleButton.setLayoutParams(new LayoutParams(WIDTH_YOU_CALCULATED,LinearLayout.LayoutParams.WRAP_CONTENT));

這會將您的ToggleButton的寬度和高度設置爲您計算的值。

+0

我編輯了我的回覆,看看它是否有幫助。 – akkilis 2012-01-05 05:01:44

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 2016-01-12 12:44:37

相關問題