第三十一篇:SOUI布局之相對於特定兄弟窗口


SOUI中通過pos的標志如:[, {, }, ],這4個標志可以相對於前一個及后一個兄弟窗口,但是有時候希望相對於不是前后窗口的兄弟窗口,比如一個通過一個中心窗口同時定義它的上下左右4個窗口,這個時候應該如何處理?

其實SOUI是支持相對於任意一個兄弟窗口的,但是定義方法有點復雜,所以在之前的博客文章中都沒有介紹。

定義的方法是這樣的:

首先被參考窗口(假定為窗口A)必須要指定窗口的ID屬性,有了ID(假定id=100),其它窗口才能引用它(這里指定name屬性是不行的,系統只會通過ID去查詢這個兄弟窗口)。

然后一個窗口(假定為窗口B)要相對於窗口A布局,只需要在pos中指定為如:pos="sib.left@100:-20,sib.bottom@100:30,@100,@100",坐標定義中的sib.left,sib.bottom用來指定這兩個坐標是相對於被引用窗口的left,bottom的值,坐標中的100:20,100:30剛代表相對於ID為100的兄弟窗口的left向偏移20像素及bottom向偏移30像素。這里的負數是代表偏移方向,和沒有sib.xxx時的負值意義不同。

下面看下demo中的示例XML(demo/uires/xml/page_layout.xml):

    <window skin="skin_page_icons" pos="[5,150,-10,-10" id="1236">
      <text pos="|0,|0" offset="-0.5,-0.5" font="adding:20" colorText="#ff000066">alpha test</text>
      <text pos="5,5" id="100" visible="0">ref text</text>
      <button pos="sib.left@100:10,sib.bottom@100:10,@100,@25" name="btn_hidetst" tip="click me to hide me and see how the next image will move">ref id:100</button>
    </window>

PS:這個定義方法有點山寨,將就着用吧,關鍵是能解決問題 :)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM