我今天處理了類似的問題,我發現從果凍豆開始,您可以使用setSwitchMinWidth(width);
來設置整個開關的最小寬度。不過,我也認爲,如果你的文字太大,那麼這個小部件就會在左邊的部分被截斷。更改拇指上的默認文本填充可能會在這裏派上用場,您可以修改setThumbTextPadding(num);
。
唯一的問題 - 這實際上是一個攔截器 - 到目前爲止,我偶然發現的是,應該根據父容器的大小來擴展開關。對於我包裹在一個自定義的線性佈局的開關(其也提供了回退用於API < = 15),並試圖這樣:
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if (android.os.Build.VERSION.SDK_INT >= 16) {
adaptSwitchWidth(w);
}
}
@TargetApi(16)
private void adaptSwitchWidth(int containerWidth) {
Switch sw = (Switch) compoundButton;
sw.setSwitchMinWidth(containerWidth);
}
不幸 - 不管什麼原因笨 - 開關插件不於反應。我試圖在OnLayoutChangeListener
中做到這一點,但沒有成功。理想情況下,開關電流的大小也應在該州知,我想自由的空間「分配」到填充這樣的:
int textPadding = Math.max(0, (sw.getWidth() - containerWidth)/4);
sw.setThumbTextPadding(textPadding);
但sw.getWidth()
在onSizeChanged()
仍返回0,可能是因爲它是仍然沒有妥善佈置。是的,我們快到了......如果你跨越東西絆倒,讓我知道:)
面向valid..m同樣的問題:( – 2014-01-09 17:48:22