我想創建一個類似於iMessage的佈局的消息傳遞視圖,其中聊天「泡沫」是其內容的大小,直到它獲取是一定的寬度。像這樣: Nativescript:使標籤跨度寬度的內容,然後包裝在最大寬度
有了nativescript,我無法找到一個適合這個的佈局。我嘗試過使用GridLayout,但列的自動屬性似乎意味着它將是內容的大小,即使內容的大小超出了視圖範圍。
<GridLayout width="100%" columns="40, auto" rows="auto, 20" class="msg them" visibility="{{is_me ? 'collapsed' : 'visible'}}">
<Image class="authorimg" col="0" stretch="aspectFill" verticalAlignment="top" src="{{user.profile_photo ? user.profile_photo.sizes.tiny_square : ''}}" />
<StackLayout class="msg_text" col="1">
<Label text="{{message}}" textWrap="true" verticalAlignment="top" />
</StackLayout>
<Label class="msg_timestamp" text="{{author}}" verticalAlignment="top" row="1" colSpan="2" />
</GridLayout>
產生這樣的:
通知的較長的不換,儘管textWrap =真上的標籤。
硬幣的另一面是這樣的:
<GridLayout width="100%" columns="40, *" rows="auto, 20" class="msg them" visibility="{{is_me ? 'collapsed' : 'visible'}}">
<Image class="authorimg" col="0" stretch="aspectFill" verticalAlignment="top" src="{{user.profile_photo ? user.profile_photo.sizes.tiny_square : ''}}" />
<StackLayout class="msg_text" col="1">
<Label text="{{message}}" textWrap="true" verticalAlignment="top" />
</StackLayout>
<Label class="msg_timestamp" text="{{author}}" verticalAlignment="top" row="1" colSpan="2" />
</GridLayout>
唯一的區別是在GridLayout的列,在這種情況下其設置爲*(使用可用區域的其餘部分)。也就是說然而,產生這樣的:
注意,短消息跨越整個寬度。我想在標籤上我需要類似width =「auto」的東西。我無法弄清楚這樣一種佈局,它可以適應兩種實現方式中最好的一種,小文本的小氣泡和長文本的氣泡。
嘿,你有沒有嘗試在你的gridLayout中創建另一列? Something like columns =「40,*,*」 – Kansen
@Kansen我確實嘗試過!對第二列(帶有消息標籤的列)使用*會使Label跨越列的整個寬度。然後在那裏添加另一個只是分隔這兩列之間的剩餘空間,產生這個:https://d3vv6lp55qjaqc.cloudfront.net/items/2E1S2k0C3S2t1s233T3j/Screenshot%202016-08-31%2008.42.59.png?X-CloudApp- Visitor-Id = 196928 – davecoffin