SkinUI入门教程

SkinUI入门教程


3.16 列表

<h2>1 滚动视图</h2> <p>滚动视图由CSkinScrollView类来代表,继承于CSkinView,支持CSkinView的所有属性和方法。</p> <p>CSkinScrollView是抽象类,是所有可滚动视图的基类。</p> <h4>1.1 设置垂直滚动条</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">VScrollBar=&amp;quot;VScrollBar.xml&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetVertScrollBar(const tstring&amp;amp; strLayout);</code></pre></li> </ul> <h4>1.2 设置动画滚动</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">AnimationScroll=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">virtual void SetAnimationScroll(BOOL bAnimationScroll);</code></pre></li> </ul> <h2>2 列表Item</h2> <p>列表Item由CSkinListItem类代表,继承于CSkinRelativeLayout,支持CSkinRelativeLayout的所有属性和方法。</p> <p>插入列表的节点必须是CSkinListItem或其子类。</p> <h4>2.1 设置鼠标按下时是否允许移动窗口</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">AllowMoveWindow=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetAllowMoveWindow(BOOL bAllow);</code></pre></li> </ul> <h4>2.2 设置鼠标移上去时的颜色</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">ColorMouseOver=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetColorMouseOver(const tstring&amp;amp; strBkgColor);</code></pre></li> </ul> <h4>2.3 设置列表鼠标按下时的颜色</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">ColorChecked=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetColorChecked(const tstring&amp;amp; strBkgColor);</code></pre></li> </ul> <h4>2.4 设置延迟加载</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">LazyLoad=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetLazyLoad(BOOL bLazyLoad);</code></pre></li> </ul> <h2>3 列表</h2> <p>列表由CSkinListView类代表,继承于CSkinScrollView,支持CSkinScrollView的所有属性和方法。</p> <h4>3.1 设置列表是否允许通过接口【GetChildById】获取子组件</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">AllowGetChild=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetAllowGetChild(BOOL bAllow);</code></pre></li> </ul> <h4>3.2 设置列表是否允许选中Item</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">AllowCheckItem=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetAllowCheckItem(BOOL bAllow);</code></pre></li> </ul> <h4>3.3 设置列表为空时的提示图片</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">EmptyImage=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetEmptyImage(const tstring&amp;amp; strEmptyImage);</code></pre></li> </ul> <h4>3.4 设置列表是否允许选中Item</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">EmptyTips=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetEmptyTips(const tstring&amp;amp; strEmptyTips);</code></pre></li> </ul> <h2>请看下面的示例</h2> <h4>效果图</h4> <p><img src="http://www.skinui.cn/doc/img/3/16/1.png" alt="列表控件" /></p> <h4>布局文件</h4> <pre><code class="language-xml">&amp;lt;SkinDialog DefaultWidth=&amp;quot;445&amp;quot; DefaultHeight=&amp;quot;300&amp;quot; SysButton=&amp;quot;CLOSE&amp;quot; Icon=&amp;quot;128&amp;quot; Caption=&amp;quot;IDS_CONTROL_SHOW16&amp;quot; Animation=&amp;quot;SizeChange&amp;quot;&amp;gt; &amp;lt;SkinRelativeLayout LayoutWidth=&amp;quot;150&amp;quot; AlignParentLeft=&amp;quot;15&amp;quot; AlignParentTop=&amp;quot;45&amp;quot; AlignParentBottom=&amp;quot;60&amp;quot; BkgColor=&amp;quot;ID_COLOR_WHITE&amp;quot; Border=&amp;quot;ID_COLOR_LINE&amp;quot;&amp;gt; &amp;lt;SkinListView Id=&amp;quot;101&amp;quot; AlignParentLeft=&amp;quot;2&amp;quot; AlignParentRight=&amp;quot;2&amp;quot; AlignParentTop=&amp;quot;2&amp;quot; AlignParentBottom=&amp;quot;2&amp;quot; VScrollBar=&amp;quot;VScrollBar.xml&amp;quot;&amp;gt; &amp;lt;SkinListItem LayoutWidth=&amp;quot;FillParent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; Image=&amp;quot;ListItem.png&amp;quot; Layout=&amp;quot;ListItem.xml&amp;quot; ChildText1=&amp;quot;SkinListItem1&amp;quot;/&amp;gt; &amp;lt;SkinListItem LayoutWidth=&amp;quot;FillParent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; Image=&amp;quot;ListItem.png&amp;quot; Layout=&amp;quot;ListItem.xml&amp;quot; ChildText1=&amp;quot;SkinListItem2&amp;quot;/&amp;gt; &amp;lt;SkinListItem LayoutWidth=&amp;quot;FillParent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; Image=&amp;quot;ListItem.png&amp;quot; Layout=&amp;quot;ListItem.xml&amp;quot; ChildText1=&amp;quot;SkinListItem3&amp;quot;/&amp;gt; &amp;lt;SkinListItem LayoutWidth=&amp;quot;FillParent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; Image=&amp;quot;ListItem.png&amp;quot; Layout=&amp;quot;ListItem.xml&amp;quot; ChildText1=&amp;quot;SkinListItem4&amp;quot;/&amp;gt; &amp;lt;SkinListItem LayoutWidth=&amp;quot;FillParent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; Image=&amp;quot;ListItem.png&amp;quot; Layout=&amp;quot;ListItem.xml&amp;quot; ChildText1=&amp;quot;SkinListItem5&amp;quot;/&amp;gt; &amp;lt;/SkinListView&amp;gt; &amp;lt;/SkinRelativeLayout&amp;gt; &amp;lt;SkinRelativeLayout LayoutWidth=&amp;quot;250&amp;quot; AlignParentRight=&amp;quot;15&amp;quot; AlignParentTop=&amp;quot;45&amp;quot; AlignParentBottom=&amp;quot;60&amp;quot; BkgColor=&amp;quot;ID_COLOR_WHITE&amp;quot; Border=&amp;quot;ID_COLOR_LINE&amp;quot;&amp;gt; &amp;lt;SkinListView Id=&amp;quot;102&amp;quot; AlignParentLeft=&amp;quot;2&amp;quot; AlignParentRight=&amp;quot;2&amp;quot; AlignParentTop=&amp;quot;2&amp;quot; AlignParentBottom=&amp;quot;2&amp;quot; VScrollBar=&amp;quot;VScrollBar.xml&amp;quot;&amp;gt; &amp;lt;SkinListItem LayoutWidth=&amp;quot;FillParent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; Image=&amp;quot;ListItem.png&amp;quot; Layout=&amp;quot;UserListItem.xml&amp;quot; ChildImage1=&amp;quot;Male.png&amp;quot; ChildText2=&amp;quot;姓名1&amp;quot; ChildText3=&amp;quot;男&amp;quot;/&amp;gt; &amp;lt;SkinListItem LayoutWidth=&amp;quot;FillParent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; Image=&amp;quot;ListItem.png&amp;quot; Layout=&amp;quot;UserListItem.xml&amp;quot; ChildImage1=&amp;quot;Female.png&amp;quot; ChildText2=&amp;quot;姓名2&amp;quot; ChildText3=&amp;quot;女&amp;quot;/&amp;gt; &amp;lt;SkinListItem LayoutWidth=&amp;quot;FillParent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; Image=&amp;quot;ListItem.png&amp;quot; Layout=&amp;quot;UserListItem.xml&amp;quot; ChildImage1=&amp;quot;Male.png&amp;quot; ChildText2=&amp;quot;姓名3&amp;quot; ChildText3=&amp;quot;男&amp;quot;/&amp;gt; &amp;lt;SkinListItem LayoutWidth=&amp;quot;FillParent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; Image=&amp;quot;ListItem.png&amp;quot; Layout=&amp;quot;UserListItem.xml&amp;quot; ChildImage1=&amp;quot;Female.png&amp;quot; ChildText2=&amp;quot;姓名4&amp;quot; ChildText3=&amp;quot;男&amp;quot;/&amp;gt; &amp;lt;SkinListItem LayoutWidth=&amp;quot;FillParent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; Image=&amp;quot;ListItem.png&amp;quot; Layout=&amp;quot;UserListItem.xml&amp;quot; ChildImage1=&amp;quot;Male.png&amp;quot; ChildText2=&amp;quot;姓名5&amp;quot; ChildText3=&amp;quot;女&amp;quot;/&amp;gt; &amp;lt;/SkinListView&amp;gt; &amp;lt;/SkinRelativeLayout&amp;gt; &amp;lt;SkinButton Id=&amp;quot;201&amp;quot; LayoutWidth=&amp;quot;150&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; ChildText1=&amp;quot;添加节点&amp;quot; Image=&amp;quot;Button.png&amp;quot; Layout=&amp;quot;Button.xml&amp;quot; AlignParentLeft=&amp;quot;15&amp;quot; AlignParentBottom=&amp;quot;15&amp;quot; PressDownOffset=&amp;quot;1&amp;quot;/&amp;gt; &amp;lt;SkinButton Id=&amp;quot;202&amp;quot; LayoutWidth=&amp;quot;250&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; ChildText1=&amp;quot;添加节点&amp;quot; Image=&amp;quot;Button.png&amp;quot; Layout=&amp;quot;Button.xml&amp;quot; AlignParentRight=&amp;quot;15&amp;quot; AlignParentBottom=&amp;quot;15&amp;quot; PressDownOffset=&amp;quot;1&amp;quot;/&amp;gt; &amp;lt;/SkinDialog&amp;gt;</code></pre> <h4>h文件</h4> <pre><code class="language-cpp">#pragma once class CListViewDialog : public CSkinDialog { public: enum { IDC_LISTVIEW1 = 101, IDC_LISTVIEW2 = 102, IDC_BUTTON1 = 201, IDC_BUTTON2 = 202, }; public: CListViewDialog(const tstring&amp;amp; strXml); public: virtual void OnInitDialog(); protected: void OnBtnClickedAddItem1(UINT uNotifyCode, int nID, CSkinView* pView); void OnBtnClickedAddItem2(UINT uNotifyCode, int nID, CSkinView* pView); SKINUI_DECLARE_MESSAGE_MAP() private: CSkinListView* m_pListView1; CSkinListView* m_pListView2; };</code></pre> <h4>cpp文件</h4> <pre><code class="language-cpp">#include &amp;quot;stdafx.h&amp;quot; #include &amp;quot;ListViewDialog.h&amp;quot; SKINUI_BEGIN_MESSAGE_MAP(CListViewDialog, CSkinDialog) ON_SKINUI_COMMAND(IDC_BUTTON1, OnBtnClickedAddItem1) ON_SKINUI_COMMAND(IDC_BUTTON2, OnBtnClickedAddItem2) SKINUI_END_MESSAGE_MAP() CListViewDialog::CListViewDialog(const tstring&amp;amp; strXml) : CSkinDialog(strXml) , m_pListView1(NULL) , m_pListView2(NULL) { } void CListViewDialog::OnInitDialog() { CSkinDialog::OnInitDialog(); m_pListView1 = static_cast&amp;lt;CSkinListView*&amp;gt;(GetChildById(IDC_LISTVIEW1)); m_pListView2 = static_cast&amp;lt;CSkinListView*&amp;gt;(GetChildById(IDC_LISTVIEW2)); } static int nIndex1 = 6; void CListViewDialog::OnBtnClickedAddItem1(UINT uNotifyCode, int nID, CSkinView* pView) { if(m_pListView1) { CSkinListItem* pListItem = new CSkinListItem(m_pListView1); if(pListItem) { pListItem-&amp;gt;SetLayoutHeight(30); pListItem-&amp;gt;SetImage(_T(&amp;quot;ListItem.png&amp;quot;)); pListItem-&amp;gt;SetLayout(_T(&amp;quot;ListItem.xml&amp;quot;)); pListItem-&amp;gt;SetChildText(100001, _T(&amp;quot;SkinListItem&amp;quot;) + SkinUI::IntToString(nIndex1++)); } m_pListView1-&amp;gt;ResetScrollInfo(); m_pListView1-&amp;gt;ScrollBottom(); m_pListView1-&amp;gt;RedrawView(); } } static int nIndex2 = 6; static BOOL bMale = FALSE; void CListViewDialog::OnBtnClickedAddItem2(UINT uNotifyCode, int nID, CSkinView* pView) { if(m_pListView2) { CSkinListItem* pListItem = new CSkinListItem(m_pListView2); if(pListItem) { pListItem-&amp;gt;SetLayoutHeight(30); pListItem-&amp;gt;SetImage(_T(&amp;quot;ListItem.png&amp;quot;)); pListItem-&amp;gt;SetLayout(_T(&amp;quot;UserListItem.xml&amp;quot;)); pListItem-&amp;gt;SetChildImage(100001, bMale ? _T(&amp;quot;Male.png&amp;quot;) : _T(&amp;quot;Female.png&amp;quot;)); pListItem-&amp;gt;SetChildText(100002, _T(&amp;quot;姓名&amp;quot;) + SkinUI::IntToString(nIndex2++)); pListItem-&amp;gt;SetChildText(100003, bMale ? _T(&amp;quot;男&amp;quot;) : _T(&amp;quot;女&amp;quot;)); bMale = !bMale; } m_pListView2-&amp;gt;ResetScrollInfo(); m_pListView2-&amp;gt;ScrollBottom(); m_pListView2-&amp;gt;RedrawView(); } }</code></pre>

页面列表

ITEM_HTML