2017-02-15 106 views
1

我有需要動態拉伸以適應內容的過濾器面板上的下拉列表中,如下所示:統一調整大小下拉動態

enter image description here

我嘗試了好幾種內容大小鉗工,但無法找到任何東西,如果可能我想設置一個可擴展的最大寬度,然後截斷比這更長的所有內容,我還希望它只用右支點向右擴展。我在這裏找到了一個類似的例子:https://forum.unity3d.com/threads/resize-standard-dropdown-to-fit-content-width.400502/

謝謝!

回答

0

好吧。讓我們從Unity論壇主題的代碼開始。

var widest = 0f; 
foreach (var item in _inputMines.GetComponentsInChildren<Text>()) { 
    widest = Mathf.Max(item.preferredWidth, widest); 
} 
_inputMines.GetComponent<LayoutElement>().preferredWidth = widest + 40; 

我們希望允許最大寬度,因此任何超過此長度的內容都將被截斷。因此,讓我們添加一個變量:

var maxWidth = 250f; 
//or whatever value; you may wish this to be a property so you can edit it in the inspector 

var widest = 0f; 
foreach (var item in _inputMines.GetComponentsInChildren<Text>()) { 

現在我們用兩個寬度值的然後它應用到內容佈局:

} 
widest = Mathf.Min(maxWidth, widest); 
_inputMines.GetComponent<LayoutElement>().preferredWidth = widest + 40; 

+40應該保留,因爲這與滾動交易。應該選擇你的maxWidth值來解釋這個。

最後,我們希望較長的項目能很好地切斷。

給每個下拉項目一個Rect Mask 2D組件(組件 - > UI - > Rect Mask 2D)。模板對象在遊戲運行之前存在於場景層次結構中,只是被禁用。您只需將組件添加到父變換中,即使用圖像(因此文本被剪裁)。

您需要確保蒙版覆蓋與圖像圖形相同的寬度並隨其一起展開,可能在X方向上略短一點,因此在繪製圖像邊框之前文本會被截斷。這應該會自動發生,但您需要檢查並可能對模板對象進行一些更改。或者,您可以使用圖像蒙版,但您必須自己使用該蒙版,但它可以允許進行非矩形剪輯。

就是這樣!