From 18a7f9f40e5fab3bee5d4ac3d8fd0273dea052d6 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期日, 26 四月 2020 12:05:28 +0800
Subject: [PATCH] 先上传一个非最新的版本
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ListViewLayoutControls/VerticalFrameControl.cs | 89 +++++++++++++++++++++++++++++++++-----------
1 files changed, 67 insertions(+), 22 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ListViewLayoutControls/VerticalFrameControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ListViewLayoutControls/VerticalFrameControl.cs
index f0f6360..8038b83 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ListViewLayoutControls/VerticalFrameControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ListViewLayoutControls/VerticalFrameControl.cs
@@ -5,7 +5,7 @@
namespace Shared.Phone.UserCenter
{
/// <summary>
- /// 鍋氭垚涓�涓噷闈㈠彧瑁匜rameLayout鐨勫垪琛ㄥ瀷鎺т欢(瀹冧笉浼氳皟鏁撮珮搴�)
+ /// 鍋氭垚涓�涓噷闈㈠彧瑁匜rameLayout鐨勫垪琛ㄥ瀷鎺т欢(瀹冧笉浼氳皟鏁撮珮搴�,鏈夋甯�)
/// </summary>
public class VerticalFrameControl : VerticalScrolViewLayout
{
@@ -18,7 +18,18 @@
/// <summary>
/// 妗屽竷鎺т欢
/// </summary>
- private FrameLayout frameTable = null;
+ private FrameLayout m_frameTable = null;
+ /// <summary>
+ /// 妗屽竷鎺т欢
+ /// </summary>
+ public FrameLayout frameTable
+ {
+ get
+ {
+ if (m_frameTable == null) { this.InitFrameTable(); }
+ return m_frameTable;
+ }
+ }
#endregion
@@ -38,14 +49,14 @@
/// </summary>
private void InitFrameTable()
{
- if (this.frameTable != null)
+ if (this.m_frameTable != null && this.m_frameTable.Parent != null)
{
return;
}
- this.frameTable = new FrameLayout();
- this.frameTable.Width = this.Width;
- this.frameTable.Height = this.Height;
- this.AddChidren(this.frameTable);
+ this.m_frameTable = new FrameLayout();
+ this.m_frameTable.Width = this.Width;
+ this.m_frameTable.Height = this.Height;
+ this.AddChidren(this.m_frameTable);
}
#endregion
@@ -61,16 +72,16 @@
//鍒濆鍖栨甯冩帶浠�
this.InitFrameTable();
- var child = this.frameTable.GetChildren(this.frameTable.ChildrenCount - 1);
+ var child = this.m_frameTable.GetChildren(this.m_frameTable.ChildrenCount - 1);
if (child != null)
{
frame.Y = child.Bottom + rowSpace;
}
- this.frameTable.AddChidren(frame);
+ this.m_frameTable.AddChidren(frame);
//璋冩暣妗屽竷楂樺害
- if (this.frameTable.Height < frame.Bottom)
+ if (this.m_frameTable.Height < frame.Bottom)
{
- this.frameTable.Height = frame.Bottom;
+ this.m_frameTable.Height = frame.Bottom;
}
}
@@ -85,13 +96,14 @@
/// <param name="buttomSpace">搴曢儴绌虹櫧闂磋窛(鐪熷疄鍊�)</param>
public void AdjustChidrenFrameHeight(FrameLayout frame, int buttomSpace)
{
- var child = frame.GetChildren(frame.ChildrenCount - 1);
- if (child != null)
+ //鑾峰彇鍧愭爣搴曢儴鏈�涓嬮潰鐨勯偅涓帶浠剁殑搴曢儴鍧愭爣
+ int value = this.GetLocationMostLastViewBottom(frame);
+ if (value != -1)
{
//璋冩暣妗屽竷楂樺害
- if (frame.Height < child.Bottom + buttomSpace)
+ if (frame.Height < value + buttomSpace)
{
- frame.Height = child.Bottom + buttomSpace;
+ frame.Height = value + buttomSpace;
}
}
}
@@ -101,14 +113,12 @@
/// </summary>
public void AdjustTableHeight()
{
- var child = this.frameTable?.GetChildren(this.frameTable.ChildrenCount - 1);
- if (child != null)
+ //鑾峰彇鍧愭爣搴曢儴鏈�涓嬮潰鐨勯偅涓帶浠剁殑搴曢儴鍧愭爣
+ int value = this.GetLocationMostLastViewBottom(this.m_frameTable);
+ if (value != -1)
{
//璋冩暣妗屽竷楂樺害
- if (this.frameTable.Height < child.Bottom)
- {
- this.frameTable.Height = child.Bottom;
- }
+ this.m_frameTable.Height = value;
}
}
@@ -119,15 +129,50 @@
public void AdjustRealHeightByBottomButton(int correctionsValue = 0)
{
var btnTemp = new BottomClickButton();
- if (btnTemp.Yaxis >= this.frameTable.Height + correctionsValue)
+ if (btnTemp.Yaxis >= this.m_frameTable.Height + correctionsValue)
{
//娌℃湁瓒呰繃
return;
}
//娣诲姞涓存椂鎺т欢,鐩磋嚦鍙互婊戝姩瓒呰繃搴曢儴鎸夐挳
+ int oldRowSpace = this.rowSpace;
+ this.rowSpace = 0;
var frameBackTemp = new FrameLayout();
frameBackTemp.Height = ControlCommonResourse.BodyFrameHeight - btnTemp.Yaxis + Application.GetRealHeight(23);
this.AddChidrenFrame(frameBackTemp);
+ this.rowSpace = oldRowSpace;
+ }
+
+ /// <summary>
+ /// 杩樺師妗屽竷楂樺害
+ /// </summary>
+ public void RecoverTableHeight()
+ {
+ if (this.m_frameTable != null)
+ {
+ m_frameTable.Height = this.Height;
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍧愭爣搴曢儴鏈�涓嬮潰鐨勯偅涓帶浠剁殑搴曢儴鍧愭爣
+ /// </summary>
+ /// <returns></returns>
+ private int GetLocationMostLastViewBottom(FrameLayout frame)
+ {
+ int bottomHeight = -1;
+
+ if (frame == null) { return bottomHeight; }
+
+ for (int i = 0; i < frame.ChildrenCount; i++)
+ {
+ var child = frame.GetChildren(i);
+ if (child.Bottom > bottomHeight)
+ {
+ bottomHeight = child.Bottom;
+ }
+ }
+ return bottomHeight;
}
#endregion
--
Gitblit v1.8.0