From 1de41bc038dcf623834b63422da350693429570b Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期三, 13 十二月 2023 16:20:47 +0800
Subject: [PATCH] Merge branch 'Dev-Branch' into wjc

---
 HDL_ON/DAL/DriverLayer/UdpSocket.cs                                                |  326 +++++++++++++--
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                       |    3 
 HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs                                       |    8 
 HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FirmwareUpdateView.cs                       |    6 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs |   18 
 HDL-ON_iOS/AppDelegate.cs                                                          |    2 
 HDL_ON/DAL/Mqtt/MqttClient.cs                                                      |    6 
 HDL_ON/HDL_ON.projitems                                                            |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/ComplaintsPage.cs                           |    6 
 HDL-ON_Android/SplashActivity.cs                                                   |    2 
 HDL_ON/DAL/DriverLayer/AsyncUdpServer.cs                                           |  453 +++++++++++++++++++++
 HDL-ON_Android/Resources/Resource.designer.cs                                      |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPage.cs    |   10 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs                                 |   11 
 HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs                            |   22 
 HDL_ON/DAL/DriverLayer/Packet.cs                                                   |   18 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFaceManagementPage.cs        |    6 
 HDL_ON/UI/MainPage.cs                                                              |    4 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPage.cs            |    6 
 HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs                                   |    4 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs                            |    1 
 HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/CombinedDimmingListPage.cs          |    8 
 /dev/null                                                                          |  186 --------
 HDL_ON/Entity/Function/Function.cs                                                 |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs            |    6 
 HDL_ON/UI/UI2/2-Classification/FunctionPage.cs                                     |   44 -
 HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPage.cs                                 |    8 
 HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs              |   14 
 HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/SupportHomeKitNotesPage.cs                  |    8 
 HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/GroupChooseRoomPage.cs              |    8 
 HDL_ON/DAL/Server/HttpServerRequest.cs                                             |    4 
 HDL_ON/UI/UI0-Stan/Resourse/HdlControlResourse.cs                                  |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPage.cs               |    6 
 33 files changed, 848 insertions(+), 364 deletions(-)

diff --git a/HDL-ON_Android/Resources/Resource.designer.cs b/HDL-ON_Android/Resources/Resource.designer.cs
index 485dc4b..af7c4b4 100644
--- a/HDL-ON_Android/Resources/Resource.designer.cs
+++ b/HDL-ON_Android/Resources/Resource.designer.cs
@@ -15,7 +15,7 @@
 {
 	
 	
-	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "13.2.0.99")]
+	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "13.2.1.111")]
 	public partial class Resource
 	{
 		
diff --git a/HDL-ON_Android/SplashActivity.cs b/HDL-ON_Android/SplashActivity.cs
index 39e931d..450ac81 100644
--- a/HDL-ON_Android/SplashActivity.cs
+++ b/HDL-ON_Android/SplashActivity.cs
@@ -139,7 +139,7 @@
             //#endif
             JPushInterface.Init(this);
 
-            Com.Chteam.Agent.BuglyAgentHelper.Init(this.ApplicationContext, "316a8f5d83");
+            //Com.Chteam.Agent.BuglyAgentHelper.Init(this.ApplicationContext, "316a8f5d83");
             
 
             BaseActivity.OnCreateActoin += (activity, application) =>
diff --git a/HDL-ON_iOS/AppDelegate.cs b/HDL-ON_iOS/AppDelegate.cs
index 9e1a694..731a1c1 100644
--- a/HDL-ON_iOS/AppDelegate.cs
+++ b/HDL-ON_iOS/AppDelegate.cs
@@ -333,7 +333,7 @@
             Console.WriteLine("111111111111");
             SetCurrentLanguage();
             //Shared.Application.FontSize = 12;
-            Bugly.Bugly.StartWithAppId("1dc40c170a");
+            //Bugly.Bugly.StartWithAppId("1dc40c170a");
             //鍙栨秷EditText榛樿瀵嗙爜杈撳叆鏂瑰紡
             //Shared.Application.IsEditTextContentTypePassword = false;
             //榛樿浣跨敤鑻规柟瀛椾綋
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index cacc68e..bb57d01 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -133,9 +133,6 @@
       <PackageReference Include="RestSharp">
         <Version>106.13.0</Version>
       </PackageReference>
-      <PackageReference Include="Xamarin.iOS.Bugly">
-        <Version>1.0.4</Version>
-      </PackageReference>
       <PackageReference Include="Xamarin.Essentials">
         <Version>1.7.0</Version>
       </PackageReference>
diff --git a/HDL_ON/DAL/DriverLayer/AsyncUdpServer.cs b/HDL_ON/DAL/DriverLayer/AsyncUdpServer.cs
new file mode 100644
index 0000000..097344b
--- /dev/null
+++ b/HDL_ON/DAL/DriverLayer/AsyncUdpServer.cs
@@ -0,0 +1,453 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading.Tasks;
+ 
+namespace HDL_ON.DAL.DriverLayer
+{
+    //class AsyncUdpServer
+    /// <summary>
+    /// UdpClient 瀹炵幇寮傛UDP鏈嶅姟鍣�
+    /// </summary>
+    public class AsyncUdpServer
+    {
+        #region Fields
+        /// <summary>
+        /// 鏈嶅姟鍣ㄧ▼搴忓厑璁哥殑鏈�澶у鎴风杩炴帴鏁�
+        /// </summary>
+        private int _maxClient;
+
+        /// <summary>
+        /// 褰撳墠鐨勮繛鎺ョ殑瀹㈡埛绔暟
+        /// </summary>
+        //private int _clientCount;
+
+        /// <summary>
+        /// 鏈嶅姟鍣ㄤ娇鐢ㄧ殑寮傛UdpClient
+        /// </summary>
+        private UdpClient _server;
+
+        /// <summary>
+        /// 瀹㈡埛绔細璇濆垪琛�
+        /// </summary>
+        //private List<AsyncUDPState> _clients;
+
+        private bool disposed = false;
+
+        /// <summary>
+        /// 鏁版嵁鎺ュ彈缂撳啿鍖�
+        /// </summary>
+        private byte[] _recvBuffer;
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// 鏈嶅姟鍣ㄦ槸鍚︽鍦ㄨ繍琛�
+        /// </summary>
+        public bool IsRunning { get; private set; }
+        /// <summary>
+        /// 鐩戝惉鐨処P鍦板潃
+        /// </summary>
+        public IPAddress Address { get; private set; }
+        /// <summary>
+        /// 鐩戝惉鐨勭鍙�
+        /// </summary>
+        public int Port { get; private set; }
+        /// <summary>
+        /// 閫氫俊浣跨敤鐨勭紪鐮�
+        /// </summary>
+        public Encoding Encoding { get; set; }
+
+        #endregion
+
+        #region 鏋勯�犲嚱鏁�
+
+        /// <summary>
+        /// 寮傛UdpClient UDP鏈嶅姟鍣�
+        /// </summary>
+        /// <param name="listenPort">鐩戝惉鐨勭鍙�</param>
+        public AsyncUdpServer(int listenPort)
+            : this(IPAddress.Any, listenPort, 10240)
+        {
+        }
+
+        /// <summary>
+        /// 寮傛UdpClient UDP鏈嶅姟鍣�
+        /// </summary>
+        /// <param name="localEP">鐩戝惉鐨勭粓缁撶偣</param>
+        public AsyncUdpServer(IPEndPoint localEP)
+            : this(localEP.Address, localEP.Port, 10240)
+        {
+        }
+
+        /// <summary>
+        /// 寮傛UdpClient UDP鏈嶅姟鍣�
+        /// </summary>
+        /// <param name="localIPAddress">鐩戝惉鐨処P鍦板潃</param>
+        /// <param name="listenPort">鐩戝惉鐨勭鍙�</param>
+        /// <param name="maxClient">鏈�澶у鎴风鏁伴噺</param>
+        public AsyncUdpServer(IPAddress localIPAddress, int listenPort, int maxClient)
+        {
+            this.Address = localIPAddress;
+            this.Port = listenPort;
+            this.Encoding = Encoding.Default;
+
+            _maxClient = maxClient;
+            //_clients = new List<AsyncUDPSocketState>();
+            _server = new UdpClient(new IPEndPoint(this.Address, this.Port));
+            uint IOC_IN = 0x80000000;
+            uint IOC_VENDOR = 0x18000000;
+            uint SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12;
+
+            _server.Client.IOControl((int)SIO_UDP_CONNRESET, new byte[] { Convert.ToByte(false) }, null);
+
+            _recvBuffer = new byte[_server.Client.ReceiveBufferSize];
+        }
+
+        #endregion
+
+        #region Method
+        /// <summary>
+        /// 鍚姩鏈嶅姟鍣�
+        /// </summary>
+        /// <returns>寮傛TCP鏈嶅姟鍣�</returns>
+        public void Start()
+        {
+            try
+            {
+                if (!IsRunning)
+                {
+                    IsRunning = true;
+                    _server.EnableBroadcast = true;
+                    _server.BeginReceive(ReceiveDataAsync, null);
+                }
+            }
+            catch (Exception e) { }
+        }
+
+        /// <summary>
+        /// 鍋滄鏈嶅姟鍣�
+        /// </summary>
+        public void Stop()
+        {
+            try
+            {
+                //if (IsRunning)
+                {
+                    IsRunning = false;
+                    _server.Close();
+                    //TODO 鍏抽棴瀵规墍鏈夊鎴风鐨勮繛鎺�
+
+                }
+            }
+            catch (Exception e) { }
+        }
+
+        /// <summary>
+        /// 鎺ユ敹鏁版嵁鐨勬柟娉�
+        /// </summary>
+        /// <param name="ar"></param>
+        private void ReceiveDataAsync(IAsyncResult ar)
+        {
+            bool isReceive = false;
+            try
+            {
+                var udpState = new AsyncUDPState();
+                IPEndPoint remote = null;
+                udpState.buffer = _server.EndReceive(ar, ref remote); ;
+                udpState.remote = remote;
+                udpState.udpClient = _server;
+
+                isReceive = true;
+                receive();
+
+                //瑙﹀彂鏁版嵁鏀跺埌浜嬩欢
+                RaiseDataReceived(udpState);
+            }
+            catch (Exception)
+            {
+                //TODO 澶勭悊寮傚父
+                RaiseOtherException(null);
+            }
+            finally
+            {
+                if (!isReceive)
+                {
+                    receive();
+                }
+            }
+        }
+
+        void receive()
+        {
+            if (IsRunning && _server != null)
+            {
+                int count = 10;
+                while (0 < count--)
+                {
+                    try
+                    {
+                        _server.BeginReceive(ReceiveDataAsync, null);
+                        break;
+                    }
+                    catch (Exception e)
+                    {
+                        System.Threading.Thread.Sleep(100);
+                    }
+                }
+            }
+
+        }
+
+        /// <summary>
+        /// 鍙戦�佹暟鎹�
+        /// </summary>
+        /// <param name="msg"></param>
+        /// <param name="remote"></param>
+        public void Send(byte[] data, IPEndPoint remote)
+        {
+            try
+            {
+                RaisePrepareSend(null);
+                _server.BeginSend(data, data.Length, remote, new AsyncCallback(SendCallback), null);
+            }
+            catch (Exception)
+            {
+                //TODO 寮傚父澶勭悊
+                RaiseOtherException(null);
+            }
+        }
+
+        private void SendCallback(IAsyncResult ar)
+        {
+            //if (ar.IsCompleted)
+            {
+                try
+                {
+                    _server.EndSend(ar);
+                    //娑堟伅鍙戦�佸畬姣曚簨浠�
+                    RaiseCompletedSend(null);
+                }
+                catch (Exception)
+                {
+                    //TODO 鏁版嵁鍙戦�佸け璐ヤ簨浠�
+                    RaiseOtherException(null);
+                }
+            }
+
+        }
+        #endregion
+
+        #region 浜嬩欢
+        /// <summary>
+        /// 鎺ユ敹鍒版暟鎹簨浠�
+        /// </summary>
+        public event EventHandler<AsyncUDPEventArgs> DataReceived;
+
+        private void RaiseDataReceived(AsyncUDPState state)
+        {
+            if (DataReceived != null)
+            {
+                DataReceived(this, new AsyncUDPEventArgs(state));
+            }
+        }
+
+        /// <summary>
+        /// 鍙戦�佹暟鎹墠鐨勪簨浠�
+        /// </summary>
+        public event EventHandler<AsyncUDPEventArgs> PrepareSend;
+
+        /// <summary>
+        /// 瑙﹀彂鍙戦�佹暟鎹墠鐨勪簨浠�
+        /// </summary>
+        /// <param name="state"></param>
+        private void RaisePrepareSend(AsyncUDPState state)
+        {
+            if (PrepareSend != null)
+            {
+                PrepareSend(this, new AsyncUDPEventArgs(state));
+            }
+        }
+
+        /// <summary>
+        /// 鏁版嵁鍙戦�佸畬姣曚簨浠�
+        /// </summary>
+        public event EventHandler<AsyncUDPEventArgs> CompletedSend;
+
+        /// <summary>
+        /// 瑙﹀彂鏁版嵁鍙戦�佸畬姣曠殑浜嬩欢
+        /// </summary>
+        /// <param name="state"></param>
+        private void RaiseCompletedSend(AsyncUDPState state)
+        {
+            if (CompletedSend != null)
+            {
+                CompletedSend(this, new AsyncUDPEventArgs(state));
+            }
+        }
+
+        /// <summary>
+        /// 缃戠粶閿欒浜嬩欢
+        /// </summary>
+        public event EventHandler<AsyncUDPEventArgs> NetError;
+        /// <summary>
+        /// 瑙﹀彂缃戠粶閿欒浜嬩欢
+        /// </summary>
+        /// <param name="state"></param>
+        private void RaiseNetError(AsyncUDPState state)
+        {
+            if (NetError != null)
+            {
+                NetError(this, new AsyncUDPEventArgs(state));
+            }
+        }
+
+        /// <summary>
+        /// 寮傚父浜嬩欢
+        /// </summary>
+        public event EventHandler<AsyncUDPEventArgs> OtherException;
+        /// <summary>
+        /// 瑙﹀彂寮傚父浜嬩欢
+        /// </summary>
+        /// <param name="state"></param>
+        private void RaiseOtherException(AsyncUDPState state, string descrip)
+        {
+            if (OtherException != null)
+            {
+                OtherException(this, new AsyncUDPEventArgs(descrip, state));
+            }
+        }
+        private void RaiseOtherException(AsyncUDPState state)
+        {
+            RaiseOtherException(state, "");
+        }
+        #endregion
+
+        #region Close
+        /// <summary>
+        /// 鍏抽棴涓�涓笌瀹㈡埛绔箣闂寸殑浼氳瘽
+        /// </summary>
+        /// <param name="state">闇�瑕佸叧闂殑瀹㈡埛绔細璇濆璞�</param>
+        public void Close(AsyncUDPState state)
+        {
+            if (state != null)
+            {
+                //_clients.Remove(state);
+                //_clientCount--;
+                //TODO 瑙﹀彂鍏抽棴浜嬩欢
+            }
+        }
+        /// <summary>
+        /// 鍏抽棴鎵�鏈夌殑瀹㈡埛绔細璇�,涓庢墍鏈夌殑瀹㈡埛绔繛鎺ヤ細鏂紑
+        /// </summary>
+        public void CloseAllClient()
+        {
+            //foreach (AsyncUDPSocketState client in _clients)
+            //{
+            //    Close(client);
+            //}
+            //_clientCount = 0;
+            //_clients.Clear();
+        }
+
+        #endregion
+
+        #region 閲婃斁
+        /// <summary>
+        /// Performs application-defined tasks associated with freeing, 
+        /// releasing, or resetting unmanaged resources.
+        /// </summary>
+        public void Dispose()
+        {
+            Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        /// <summary>
+        /// Releases unmanaged and - optionally - managed resources
+        /// </summary>
+        /// <param name="disposing"><c>true</c> to release 
+        /// both managed and unmanaged resources; <c>false</c> 
+        /// to release only unmanaged resources.</param>
+        protected virtual void Dispose(bool disposing)
+        {
+            if (!this.disposed)
+            {
+                if (disposing)
+                {
+                    try
+                    {
+                        Stop();
+                        if (_server != null)
+                        {
+                            _server = null;
+                        }
+                    }
+                    catch (SocketException)
+                    {
+                        //TODO
+                        RaiseOtherException(null);
+                    }
+                }
+                disposed = true;
+            }
+        }
+        #endregion
+    }
+}
+public class AsyncUDPState
+{
+    // Client   socket.
+    public UdpClient udpClient = null;
+    // Size of receive buffer.
+    public const int BufferSize = 1024;
+    // Receive buffer.
+    public byte[] buffer = new byte[BufferSize];
+    // Received data string.
+    public StringBuilder sb = new StringBuilder();
+
+    public IPEndPoint remote = new IPEndPoint(IPAddress.Any, 0);
+}
+/// <summary>
+/// UdpClient 寮傛UDP鏈嶅姟鍣ㄤ簨浠跺弬鏁扮被
+/// </summary>
+public class AsyncUDPEventArgs : EventArgs
+{
+    /// <summary>
+    /// 鎻愮ず淇℃伅
+    /// </summary>
+    public string _msg;
+
+    /// <summary>
+    /// 瀹㈡埛绔姸鎬佸皝瑁呯被
+    /// </summary>
+    public AsyncUDPState _state;
+
+    /// <summary>
+    /// 鏄惁宸茬粡澶勭悊杩囦簡
+    /// </summary>
+    public bool IsHandled { get; set; }
+
+    public AsyncUDPEventArgs(string msg)
+    {
+        this._msg = msg;
+        IsHandled = false;
+    }
+    public AsyncUDPEventArgs(AsyncUDPState state)
+    {
+        this._state = state;
+        IsHandled = false;
+    }
+    public AsyncUDPEventArgs(string msg, AsyncUDPState state)
+    {
+        this._msg = msg;
+        this._state = state;
+        IsHandled = false;
+    }
+
+}
diff --git a/HDL_ON/DAL/DriverLayer/Packet.cs b/HDL_ON/DAL/DriverLayer/Packet.cs
index 0e8f8dc..99f46b8 100644
--- a/HDL_ON/DAL/DriverLayer/Packet.cs
+++ b/HDL_ON/DAL/DriverLayer/Packet.cs
@@ -12,11 +12,11 @@
     /// </summary>
     public class Packet
     {
-        /// <summary>
-        /// 缂撳啿鍖哄ぇ灏�
-        /// Link鍗忚鐜板湪涓�涓寘鐨勬暟鎹瘮杈冨ぇ锛岀紦鍐插尯澶皬瀛樹笉瀹屽叏閮ㄦ暟鎹� 2023-07-14 16:03:56  wxr
-        /// </summary>
-        public const int Size = 1024 * 10;
+        ///// <summary>
+        ///// 缂撳啿鍖哄ぇ灏�
+        ///// Link鍗忚鐜板湪涓�涓寘鐨勬暟鎹瘮杈冨ぇ锛岀紦鍐插尯澶皬瀛樹笉瀹屽叏閮ㄦ暟鎹� 2023-07-14 16:03:56  wxr
+        ///// </summary>
+        //public const int Size = 2000;
 
         /// <summary>
         /// 鎺ユ敹鍒扮殑鏁版嵁
@@ -28,11 +28,15 @@
         /// </summary>
         public System.Net.EndPoint RemoteEndPoint;
 
-        public Packet()
+        public Packet(int lenght)
         {
-            this.Bytes = new byte[Size];
+            this.Bytes = new byte[lenght];
+           
             RemoteEndPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Any, 0);
         }
+
+
+
         public Packet(byte[] data, System.Net.EndPoint remoteEndPoint)
         {
             this.Bytes = data;
diff --git a/HDL_ON/DAL/DriverLayer/UdpSocket.cs b/HDL_ON/DAL/DriverLayer/UdpSocket.cs
index df9662a..50ceeac 100644
--- a/HDL_ON/DAL/DriverLayer/UdpSocket.cs
+++ b/HDL_ON/DAL/DriverLayer/UdpSocket.cs
@@ -1,4 +1,222 @@
-锘縰sing System;
+锘�//using System;
+//using System.Net.Sockets;
+//using System.Net;
+
+//namespace HDL_ON.DriverLayer
+//{
+//	public class UdpSocket
+//	{
+//		static UdpSocket _busSocket;
+//		public static UdpSocket _BusSocket
+//        {
+//            get
+//            {
+//				if(_busSocket == null)
+//                {
+//					_busSocket = new UdpSocket();
+//                }
+//				return _busSocket;
+//            }
+//        }
+
+//		//鏈湴Socket
+//		private Socket busSocket;
+//		public int Port = 0;
+//		/// <summary>
+//		/// 鍚姩Socket鎺ユ敹鍜屽彂閫佸姛鑳�
+//		/// </summary>
+//		public void Start (int port = 0)
+//        {
+//			if (IsRunning)
+//			{
+//				if (port == Port)
+//                {
+//                    return;
+//				}
+//                else
+//                {
+//                    busSocket.Close();
+//				}
+//            }
+//			if (port != 0)
+//				Port = port;
+//			if (Port == 0)
+//				return;
+
+//            busSocket = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
+//            busSocket.EnableBroadcast = true;
+//            try {
+//				busSocket.Bind(new IPEndPoint(IPAddress.Any, Port));
+
+//				busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.0.168.188")));
+//				relinkCount = 0;
+//			}
+//			catch (Exception ex){
+//				MainPage.Log ($"udp port bind error : {ex.Message}");
+
+//				busSocket = null;
+//                return;
+//            }
+
+//            asyncBeginReceive();
+
+//            MainPage.Log ($"udp port : {port}");
+//        }
+
+//		/// <summary>
+//		/// 鍋滄Socket
+//		/// </summary>
+//		public void Stop()
+//		{
+//			if(busSocket == null)
+//            {
+//				return;
+//            }
+//			if (!IsRunning)
+//			{
+//				return;
+//			}
+//			try
+//			{
+//				busSocket.Close();
+//				relinkCount = 0;
+//			}
+//			catch { }
+//			busSocket = null;
+//			MainPage.Log("Socket鍏抽棴");
+//		}
+
+//		/// <summary>
+//		/// 褰撳墠鐨凷ocket鏄惁杩愯
+//		/// </summary>
+//		public bool IsRunning
+//		{
+//			get
+//			{
+//				return null == busSocket ? false : true;
+//			}
+//		}
+
+//		/// <summary>
+//		/// 寮�濮嬪紓姝ユ帴鏀舵暟鎹�
+//		/// </summary>
+//		private void asyncBeginReceive()
+//		{
+//			if (!IsRunning)
+//			{
+//				return;
+//			}
+//			if(busSocket == null)
+//            {
+//				return;
+//            }
+
+//            try {
+//                Packet packet = new Packet ();
+//                busSocket.BeginReceiveFrom (packet.Bytes, 0, packet.Bytes.Length, SocketFlags.None, ref packet.RemoteEndPoint, new AsyncCallback (asyncEndReceive), packet);
+//            } 
+//            catch (Exception e) {
+//                System.Threading.Thread.Sleep (1);
+//                Console.WriteLine("asyncBeginReceive " + relinkCount	);
+//				if (relinkCount == 0)
+//				{
+//					relinkCount = 1;
+//					asyncBeginReceive();
+//				}
+//                Console.WriteLine($"asyncBeginReceive {e.Message}");
+//            } 
+//		}
+//		/// <summary>
+//        /// 閲嶈繛娆℃暟
+//        /// </summary>
+//		private int relinkCount = 0;
+
+
+
+//		/// <summary>
+//		/// 寮傛鎺ユ敹鏁版嵁缁撴潫
+//		/// </summary>
+//		/// <param name="iar"></param>
+//		private void asyncEndReceive(IAsyncResult iar)
+//		{
+//			if (!IsRunning)
+//			{
+//				return;
+//			}
+//			try
+//			{
+//				if (busSocket == null)
+//				{
+//					return;
+//				}
+//				asyncBeginReceive();
+//				Packet packet = (Packet)iar.AsyncState;
+//				int len = busSocket.EndReceiveFrom(iar, ref packet.RemoteEndPoint);
+
+//				byte[] bytes = packet.Bytes;
+//				packet.Bytes = new byte[len];
+//				Array.Copy(bytes, 0, packet.Bytes, 0, packet.Bytes.Length);
+
+//				//MainPage.Log($"鎺ユ敹{packet.RemoteEndPoint}鏁版嵁");
+//				//mqtt杩炴帴鏁版嵁璇诲彇  A鍗忚缃戠粶璁惧淇℃伅璇诲彇鍥炲 澶勭悊
+//				if (((IPEndPoint)packet.RemoteEndPoint).Port == 8585)
+//				{
+//					Control.Ins.ConvertReceiveData(bytes, ((IPEndPoint)packet.RemoteEndPoint).Address.ToString());
+//				}
+//				else if (((IPEndPoint)packet.RemoteEndPoint).Port == 6000)//澶勭悊bus 6000绔彛鐨勬暟鎹�
+//				{
+//					packet.Manager();
+//				}
+
+//			}
+//			catch (Exception ex)
+//			{
+//				MainPage.Log($"寮傛鎺ユ敹鏁版嵁缁撴潫 {ex.Message},{((Packet)iar.AsyncState).Bytes}");
+//			}
+//		}
+
+//		/// <summary>
+//		/// 寮傛鍙戦�佹暟鎹�
+//		/// </summary>
+//		/// <param name="tempPacket"></param>
+//		public void AsyncBeginSend(Packet tempPacket)
+//		{
+//			try
+//			{
+//				if (!IsRunning)
+//				{
+//					tempPacket.HaveSendCount++;
+//					return;
+//				}
+//				tempPacket.FlagDateTime = System.DateTime.Now;
+//				tempPacket.HaveSendCount++;
+//				busSocket.BeginSendTo(tempPacket.Bytes, 0, tempPacket.Bytes.Length, SocketFlags.None, tempPacket.RemoteEndPoint, new AsyncCallback(asyncEndSend), tempPacket);
+//			}
+//			catch (Exception ex)
+//			{
+//				MainPage.Log($"AsyncBeginSend error {ex.Message}");
+//			}
+//		}
+
+//		/// <summary>
+//		/// 寮傛鍙戦�佹暟鎹粨鏉�
+//		/// </summary>
+//		/// <param name="iar"></param>
+//		private void asyncEndSend(IAsyncResult iar)
+//		{
+//			Packet tempUDPPacketBuffer = (Packet)iar.AsyncState;
+//			try
+//			{
+//				int bytesSent = busSocket.EndSendTo(iar);
+//			}
+//			catch {
+
+//            }
+//		}
+//	}
+//}
+
+using System;
 using System.Net.Sockets;
 using System.Net;
 
@@ -8,16 +226,16 @@
 	{
 		static UdpSocket _busSocket;
 		public static UdpSocket _BusSocket
-        {
-            get
-            {
-				if(_busSocket == null)
-                {
+		{
+			get
+			{
+				if (_busSocket == null)
+				{
 					_busSocket = new UdpSocket();
-                }
+				}
 				return _busSocket;
-            }
-        }
+			}
+		}
 
 		//鏈湴Socket
 		private Socket busSocket;
@@ -25,53 +243,55 @@
 		/// <summary>
 		/// 鍚姩Socket鎺ユ敹鍜屽彂閫佸姛鑳�
 		/// </summary>
-		public void Start (int port = 0)
-        {
+		public void Start(int port = 0)
+		{
 			if (IsRunning)
 			{
 				if (port == Port)
-                {
-                    return;
+				{
+					return;
 				}
-                else
-                {
-                    busSocket.Close();
+				else
+				{
+					busSocket.Close();
 				}
-            }
+			}
 			if (port != 0)
 				Port = port;
 			if (Port == 0)
 				return;
 
-            busSocket = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
-            busSocket.EnableBroadcast = true;
-            try {
+			busSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
+			busSocket.EnableBroadcast = true;
+			try
+			{
 				busSocket.Bind(new IPEndPoint(IPAddress.Any, Port));
 
 				busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.0.168.188")));
 				relinkCount = 0;
 			}
-			catch (Exception ex){
-				MainPage.Log ($"udp port bind error : {ex.Message}");
+			catch (Exception ex)
+			{
+				MainPage.Log($"udp port bind error : {ex.Message}");
 
 				busSocket = null;
-                return;
-            }
+				return;
+			}
 
-            asyncBeginReceive();
+			asyncBeginReceive();
 
-            MainPage.Log ($"udp port : {port}");
-        }
+			MainPage.Log($"udp port : {port}");
+		}
 
 		/// <summary>
 		/// 鍋滄Socket
 		/// </summary>
 		public void Stop()
 		{
-			if(busSocket == null)
-            {
+			if (busSocket == null)
+			{
 				return;
-            }
+			}
 			if (!IsRunning)
 			{
 				return;
@@ -97,6 +317,8 @@
 			}
 		}
 
+		byte []receiveBytes = new byte[2000];
+
 		/// <summary>
 		/// 寮�濮嬪紓姝ユ帴鏀舵暟鎹�
 		/// </summary>
@@ -106,29 +328,35 @@
 			{
 				return;
 			}
-			if(busSocket == null)
-            {
+			if (busSocket == null)
+			{
 				return;
-            }
+			}
 
-            try {
-                Packet packet = new Packet ();
-                busSocket.BeginReceiveFrom (packet.Bytes, 0, packet.Bytes.Length, SocketFlags.None, ref packet.RemoteEndPoint, new AsyncCallback (asyncEndReceive), packet);
-            } 
-            catch (Exception e) {
-                System.Threading.Thread.Sleep (1);
-                Console.WriteLine("asyncBeginReceive " + relinkCount	);
+			try
+			{
+				int len = busSocket.Receive(receiveBytes, SocketFlags.None);
+			    
+				Packet packet = new Packet(len);
+
+				System.Array.Copy(receiveBytes, packet.Bytes, len);
+                packet.Manager();
+			}
+			catch (Exception e)
+			{
+				System.Threading.Thread.Sleep(1);
+				Console.WriteLine("asyncBeginReceive " + relinkCount);
 				if (relinkCount == 0)
 				{
 					relinkCount = 1;
 					asyncBeginReceive();
 				}
-                Console.WriteLine($"asyncBeginReceive {e.Message}");
-            } 
+				Console.WriteLine($"asyncBeginReceive {e.Message}");
+			}
 		}
 		/// <summary>
-        /// 閲嶈繛娆℃暟
-        /// </summary>
+		/// 閲嶈繛娆℃暟
+		/// </summary>
 		private int relinkCount = 0;
 
 
@@ -209,9 +437,11 @@
 			{
 				int bytesSent = busSocket.EndSendTo(iar);
 			}
-			catch {
-            
-            }
+			catch
+			{
+
+			}
 		}
 	}
-}
\ No newline at end of file
+}
+
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index 4353a7f..bb23288 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -565,7 +565,7 @@
                                     //SetGatewayOnlineResetCheck();
                                     //var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
                                     //bus鏁版嵁瑙f瀽
-                                    var packet = new Packet();
+                                    var packet = new Packet(e.ApplicationMessage.Payload.Length);
 
                                     if (!string.IsNullOrEmpty(DB_ResidenceData.Instance.HomeGateway.aesKey))
                                     {
@@ -891,9 +891,9 @@
         static void SendPushSignOut()
         {
             byte[] message = Encoding.UTF8.GetBytes(PushSignStr);
-#if DEBUG
+
             MqttRemoteSend(message, 4);
-#endif
+
         }
 
         /// <summary>
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index 46ccea0..6a3994e 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -710,7 +710,7 @@
                             if (mHomeGatewayRes.Count > 0)
                             {
                                 DB_ResidenceData.Instance.HomeGateway = mHomeGatewayRes[0];//缃戝叧鐘舵��
-                                DriverLayer.Control.Ins.GatewayOnline_Cloud = mHomeGatewayRes[0].gatewayStatus;
+                                HDL_ON.DriverLayer.Control.Ins.GatewayOnline_Cloud = mHomeGatewayRes[0].gatewayStatus;
                                 DB_ResidenceData.Instance.SaveResidenceData();
                                 return revertObj.Code;
                             }
@@ -776,7 +776,7 @@
                 var mHomeGatewayRes = Newtonsoft.Json.JsonConvert.DeserializeObject<HomeGatewayInfo>(revertObj.Data.ToString());
                 if (mHomeGatewayRes != null)
                 {
-                    DriverLayer.Control.Ins.GatewayOnline_Cloud = mHomeGatewayRes.gatewayStatus;
+                    HDL_ON.DriverLayer.Control.Ins.GatewayOnline_Cloud = mHomeGatewayRes.gatewayStatus;
                 }
             }
             return revertObj.Code;
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 011c185..fa97357 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -2305,7 +2305,7 @@
         /// <summary>
         /// 绾㈠鐑按鍣�
         /// </summary>
-        public const string HeaterIr = " ir.water_heater";
+        public const string HeaterIr = "ir.water_heater";
         /// <summary>
         /// 绾㈠椋庢墖
         /// </summary>
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index 1c8edc2..3f704ce 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -171,7 +171,6 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\MemberManagement\AddMemberScanPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\MemberManagement\MemberManagementPageBLL.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\MemberManagement\MemberPermissionPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\MemberManagement\ChooseShareMemberTargetListPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\AddDevciePage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\DeviceListPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\BrandListPage.cs" />
@@ -595,6 +594,7 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\Constant.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Scene\SceneTargetTypeChoosePage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Scene\SceneAutomationListChoosePage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\AsyncUdpServer.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
diff --git a/HDL_ON/UI/MainPage.cs b/HDL_ON/UI/MainPage.cs
index 50ba13c..4c1320d 100644
--- a/HDL_ON/UI/MainPage.cs
+++ b/HDL_ON/UI/MainPage.cs
@@ -524,9 +524,9 @@
             try
             {
 #if __ANDROID__
-                Com.Chteam.Agent.BuglyAgentHelper.SetUserId(UserInfo.Current.AccountString);
+                //Com.Chteam.Agent.BuglyAgentHelper.SetUserId(UserInfo.Current.AccountString);
 #else
-                Bugly.Bugly.SetUserIdentifier(UserInfo.Current.AccountString);
+                //Bugly.Bugly.SetUserIdentifier(UserInfo.Current.AccountString);
 #endif
             }
             catch (Exception ex)
diff --git a/HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs b/HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs
index 19ea6e0..34cd84a 100644
--- a/HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs
+++ b/HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs
@@ -45,12 +45,14 @@
         {
             bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
             this.AddChidren(bodyView);
-            new TopViewDiv(this, bodyView, titleStr).LoadTopView(closeAction);
+            var topView = new TopViewDiv(this, bodyView, titleStr);
+            topView.maginY = 10;
+            topView.LoadTopView(closeAction);
             //WebView
             mWebView = new WebView()
             {
-                Y = Application.GetRealHeight(64),
-                Height = bodyView.Height - Application.GetRealHeight(64),
+                Y = Application.GetRealHeight(64+10),
+                Height = bodyView.Height - Application.GetRealHeight(64+10),
                 X = Application.GetRealWidth(16),
                 Width = bodyView.Width - Application.GetRealWidth(32)
             };
diff --git a/HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs b/HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs
index 85164ed..1f341aa 100644
--- a/HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs
+++ b/HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs
@@ -95,7 +95,7 @@
             //杩斿洖閿�
             var btnBack = new PicViewControl(40, 28);
             btnBack.X = Application.GetRealWidth(10);
-            btnBack.Y = Application.GetRealHeight(9);
+            btnBack.Y = Application.GetRealHeight(19);
             btnBack.UnSelectedImagePath = "Public/BackIcon.png";
             topFrameLayout.AddChidren(btnBack);
             topFrameLayout.AddTag("btnBack", btnBack);
@@ -119,7 +119,7 @@
             //鏍囬
             var btnTilte = new NormalViewControl(270, 25, true);
             btnTilte.Gravity = Gravity.CenterHorizontal;
-            btnTilte.Y = Application.GetRealHeight(10);
+            btnTilte.Y = Application.GetRealHeight(20);
             btnTilte.TextAlignment = TextAlignment.Center;
             btnTilte.TextSize = UI.CSS.CSS_FontSize.HeadlineFontSize;
             btnTilte.TextColor = UI.CSS.CSS_Color.FirstLevelTitleColor;
diff --git a/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs b/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
index 9f4971b..a58c218 100644
--- a/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
+++ b/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
@@ -302,12 +302,20 @@
         /// <param name="btnHigherCollection">涓婁竴绾х晫闈㈢殑鏀惰棌鎺т欢(鍘熸潵on鐨勬鏋跺お鍧�)</param>
         /// <param name="btnHigherDeviceName">涓婁竴绾х晫闈㈢殑璁惧鍚嶅瓧鎺т欢(鍘熸潵on鐨勬鏋跺お鍧�)</param>
         private void AddTopSettingIcon(Button btnHigherDeviceName, Button btnHigherRoom)
-        {
-            //璁剧疆鍥炬爣(闂ㄩ攣鐣岄潰闇�瑕佸�熺敤杩欎釜鍥炬爣鐨刋杞村拰Y杞�,鎵�浠ュ姞杩涙潵)
-            var btnSetting = new PicViewControl(28, 28);
-            btnSetting.X = Application.GetRealWidth(337);
-            btnSetting.Y = Application.GetRealHeight(9);
-            btnSetting.UnSelectedImagePath = "Public/FuncInfoSetIcon.png";
+        {
+            //璁剧疆鍥炬爣(闂ㄩ攣鐣岄潰闇�瑕佸�熺敤杩欎釜鍥炬爣鐨刋杞村拰Y杞�,鎵�浠ュ姞杩涙潵)
+            var btnSetting = new Button()
+            {
+                X = Application.GetRealWidth(337),
+                Y = Application.GetRealHeight(19),
+                Width = Application.GetMinRealAverage(32),
+                Height = Application.GetMinRealAverage(32),
+                UnSelectedImagePath = "Public/FuncInfoSetIcon.png",
+            };
+            //var btnSetting = new PicViewControl(28, 28);
+            //btnSetting.X = Application.GetRealWidth(337);
+            //btnSetting.Y = Application.GetRealHeight(9);
+            //btnSetting.UnSelectedImagePath = "Public/FuncInfoSetIcon.png";
             btnSetting.Name = "btnSetting";
             topFrameLayout.AddChidren(btnSetting);
 
@@ -317,7 +325,7 @@
                 btnSetting.Visible = false;
             }
 
-            btnSetting.ButtonClickEvent += (sender, e) =>
+            btnSetting.MouseUpEventHandler += (sender, e) =>
             {
                 var infoView = new UI.FunctionBaseInfoSetPage(this.device, () =>
                 {
diff --git a/HDL_ON/UI/UI0-Stan/Resourse/HdlControlResourse.cs b/HDL_ON/UI/UI0-Stan/Resourse/HdlControlResourse.cs
index ceca9b1..640d1b6 100644
--- a/HDL_ON/UI/UI0-Stan/Resourse/HdlControlResourse.cs
+++ b/HDL_ON/UI/UI0-Stan/Resourse/HdlControlResourse.cs
@@ -17,7 +17,7 @@
         /// <summary>
         /// 鐢婚潰TopFrameLayout鐨勯珮搴�(楂樺害锛�44)
         /// </summary>
-        public static int TopFrameHeight = Application.GetRealHeight(44);
+        public static int TopFrameHeight = Application.GetRealHeight(44 + 10);
         /// <summary>
         /// 鐢婚潰BodyFrameLayout鐨勯珮搴�(涓嶈兘鐩存帴鎸囧畾鏁板��,涓嶇劧鏈夊彲鑳戒細鍑虹幇璇樊,瀵艰嚧鏃犳硶閾烘弧)
         /// </summary>
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
index c8891fe..c1e7d38 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
@@ -84,50 +84,24 @@
                     skipView.LoadPage();
                     MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                 };
-                new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView_LightFunction(action);
+                var topView = new TopViewDiv(bodyView, Language.StringByID(titleId));
+                topView.maginY = 10;
+                topView.LoadTopView_LightFunction(action);
             }
             else
             {
-                new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView();
+                var topView = new TopViewDiv(bodyView, Language.StringByID(titleId));
+                topView.maginY = 10;
+                topView.LoadTopView();
             }
 
-
-
-#if DEBUG
-            //Button testBtn = new Button()
-            //{
-            //    X = Application.GetRealWidth(80),
-            //    Height = Application.GetRealHeight(64),
-            //    BackgroundColor = 0xFFFF0000
-            //};
-            //bodyView.AddChidren(testBtn);
-            //int ddd = 0;
-            //testBtn.MouseUpEventHandler = (sender, e) => {
-            //    ddd++;
-            
-            //        Function function_online = FunctionList.List.GetLightList().Find((obj) => obj.sid == "0001017DB92D2602020100010101");
-            //    if (ddd % 2 == 0)
-            //    {
-            //        function_online.online = true;
-            //    }
-            //    else
-            //    {
-            //        function_online.online = false;
-            //    }
-            //    HomePage.LoadEvent_RefreshDevcieOnline(function_online);
-            //    FunctionPage.UpdataOnline(function_online);
-            //    RoomPage.UpdataOnline(function_online);
-
-
-            //};
-#endif
 
             /// <summary>
             /// 鎴块棿鍐呭鏄剧ず鍖哄煙
             /// </summary>
             var roomFloorChangeView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(64),
+                Y = Application.GetRealHeight(64+10),
                 Height = Application.GetRealHeight(52),
             };
             bodyView.AddChidren(roomFloorChangeView);
@@ -158,8 +132,8 @@
 
             functionListView = new VerticalScrolViewLayout()
             {
-                Y = Application.GetRealHeight(64 + 52),
-                Height = Application.GetRealHeight(603 - 12 - 52),
+                Y = Application.GetRealHeight(64 + 52 +10),
+                Height = Application.GetRealHeight(603 - 12 - 52-10),
             };
             bodyView.AddChidren(functionListView);
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/ComplaintsPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/ComplaintsPage.cs
index 811a71e..227a159 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/ComplaintsPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/ComplaintsPage.cs
@@ -29,12 +29,14 @@
         /// </summary>
         public void LoadPage()
         {
-            new TopViewDiv(bodyView, Language.StringByID(StringId.Complaints)).LoadTopView();
+            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.Complaints));
+            topView.maginY = 10;
+            topView.LoadTopView();
 
             #region 鎶曡瘔鑱旂郴
             FrameLayout phoneRow = new FrameLayout()
             {
-                Y = Application.GetRealHeight(64),
+                Y = Application.GetRealHeight(64+10),
                 Height = Application.GetRealWidth(50),
             };
             bodyView.AddChidren(phoneRow);
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FirmwareUpdateView.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FirmwareUpdateView.cs
index da10e26..83a359d 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FirmwareUpdateView.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FirmwareUpdateView.cs
@@ -14,12 +14,14 @@
 
         public void ShowPage()
         {
-            new TopViewDiv(bodyView, Language.StringByID(StringId.FirmwareUpdate)).LoadTopView();
+            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.FirmwareUpdate));
+            topView.maginY = 10;
+            topView.LoadTopView();
 
             var contentView = new VerticalScrolViewLayout()
             {
                 X = Application.GetRealWidth(12),
-                Y = Application.GetRealHeight(90),
+                Y = Application.GetRealHeight(100),
                 Height = bodyView.Height,
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/SupportHomeKitNotesPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/SupportHomeKitNotesPage.cs
index a9f92b0..b8dade0 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/SupportHomeKitNotesPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/SupportHomeKitNotesPage.cs
@@ -14,12 +14,14 @@
         }
         public void ShowPage()
         {
-            new TopViewDiv(bodyView, Language.StringByID(StringId.SupportHomeKitNotes)).LoadTopView();
+            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.SupportHomeKitNotes));
+            topView.maginY = 10;
+            topView.LoadTopView();
 
             var contentView = new VerticalScrolViewLayout()
             {
-                Y = Application.GetRealHeight(90),
-                Height = bodyView.Height ,
+                Y = Application.GetRealHeight(100),
+                Height = Application.GetRealHeight(490) ,
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
             bodyView.AddChidren(contentView);
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
index 1066e2f..5fef359 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
@@ -92,11 +92,15 @@
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
             if (isAdd)
             {
-                new TopViewDiv(bodyView, Language.StringByID(StringId.GroupControl)).LoadTopView();
+                var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.GroupControl));
+                topView.maginY = 10;
+                topView.LoadTopView();
             }
             else
             {
-                new TopViewDiv(bodyView, "").LoadTopView_SettingText(()=> {
+                var topView = new TopViewDiv(bodyView, "");
+                topView.maginY = 10;
+                topView.LoadTopView_SettingText(()=> {
 
                     Action action = () => {
                         var waitPage = new Loading();
@@ -158,8 +162,8 @@
             }
             var contentView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(64),
-                Height = Application.GetRealHeight(667-64),
+                Y = Application.GetRealHeight(64+10),
+                Height = Application.GetRealHeight(667-64-10),
             };
             bodyView.AddChidren(contentView);
 
@@ -371,7 +375,7 @@
             functionListView = new VerticalScrolViewLayout()
             {
                 Y = Application.GetRealHeight(220),
-                Height = Application.GetRealHeight(640 - 12 - 52 - 100 -100),
+                Height = Application.GetRealHeight(640 - 12 - 52 - 100 -100-10),
             };
             bodyView.AddChidren(functionListView);
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/CombinedDimmingListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/CombinedDimmingListPage.cs
index 351bee9..1c9c47a 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/CombinedDimmingListPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/CombinedDimmingListPage.cs
@@ -22,7 +22,9 @@
         public void LoadPage()
         {
 
-            new TopViewDiv(bodyView, Language.StringByID(StringId.GroupControl)).LoadTopView_AddIcon("CombinedDimming",
+            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.GroupControl));
+            topView.maginY = 10;
+            topView.LoadTopView_AddIcon("CombinedDimming",
                 (s, c) =>
                 {
                     try
@@ -44,8 +46,8 @@
 
             contentView = new VerticalScrolViewLayout()
             {
-                Y = Application.GetRealHeight(64),
-                Height = Application.GetRealHeight(667 - 64),
+                Y = Application.GetRealHeight(64+10),
+                Height = Application.GetRealHeight(667 - 64-10),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
             bodyView.AddChidren(contentView);
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/GroupChooseRoomPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/GroupChooseRoomPage.cs
index c4ed617..4ca1413 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/GroupChooseRoomPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/GroupChooseRoomPage.cs
@@ -60,12 +60,14 @@
         public void LoadPage()
         {
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
-            new TopViewDiv(bodyView, Language.StringByID(StringId.CombinedDimming)).LoadTopView();
+            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.CombinedDimming));
+            topView.maginY = 10;
+            topView.LoadTopView();
 
             contentView = new VerticalScrolViewLayout()
             {
-                Y = Application.GetRealHeight(64),
-                Height = Application.GetRealHeight(667 - 64),
+                Y = Application.GetRealHeight(64+10),
+                Height = Application.GetRealHeight(667 - 64-10),
             };
             bodyView.AddChidren(contentView);
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPage.cs
index 8704a24..b79d50f 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPage.cs
@@ -34,11 +34,13 @@
         public void LoadPage()
         {
             bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
-            new TopViewDiv(bodyView, Language.StringByID(StringId.AddMember)).LoadTopView();
+            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.AddMember));
+            topView.maginY = 10;
+            topView.LoadTopView();
 
             var btnMemberName = new Button()
             {
-                Y = Application.GetRealHeight(70),
+                Y = Application.GetRealHeight(70+10),
                 X = Application.GetRealWidth(16),
                 Height = Application.GetRealHeight(32),
                 TextColor = CSS_Color.FirstLevelTitleColor,
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPage.cs
deleted file mode 100644
index 99001ef..0000000
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPage.cs
+++ /dev/null
@@ -1,186 +0,0 @@
-锘�//using System.Collections.Generic;
-//using HDL_ON.DAL.Server;
-//using HDL_ON.Entity;
-//using HDL_ON.UI.CSS;
-//using Shared;
-
-//namespace HDL_ON.UI
-//{
-//    /// <summary>
-//    /// 鍔犺浇闇�瑕佸垎浜埌瀛愯处鍙风殑閫夋嫨鐣岄潰
-//    /// </summary>
-//    public partial class ChooseShareMemberTargetListPage : FrameLayout
-//    {
-//        ChooseShareMemberTargetListPage bodyView;
-//        VerticalScrolViewLayout contentView;
-//        Button btnOption;
-
-//        Loading waitPage;
-//        List<ShareData> addFuns;
-//        List<ResidenceMemberInfo> memberList;
-//        ResidenceMemberInfo memberInfo;
-
-//        public ChooseShareMemberTargetListPage(List<ShareData> funs, ResidenceMemberInfo mInfo)
-//        {
-//            memberList = new List<ResidenceMemberInfo>();
-//            addFuns = funs;
-//            bodyView = this;
-//            memberInfo = mInfo;
-//        }
-
-//        public void LoadPage()
-//        {
-//            //鍒涘缓璇诲彇鎴愬憳璐﹀彿绾跨▼
-//            var thread = LoadThread_GetResidenceMemberAccount();
-//            waitPage = new Loading();
-//            new PublicAssmebly().LoadPage_WaitPage(thread, bodyView, waitPage);
-
-//            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
-//            new TopViewDiv(bodyView, Language.StringByID(StringId.Shared)).LoadTopView();
-
-//            #region title view
-//            FrameLayout titleView = new FrameLayout()
-//            {
-//                Y = Application.GetRealHeight(72),
-//                Height = Application.GetRealHeight(44),
-//                BackgroundColor = CSS_Color.MainBackgroundColor,
-//            };
-//            bodyView.AddChidren(titleView);
-
-//            Button btnTitle = new Button()
-//            {
-//                X = Application.GetRealWidth(16),
-//                TextColor = CSS_Color.FirstLevelTitleColor,
-//                TextID = StringId.SharedTo,
-//                TextSize = CSS_FontSize.SubheadingFontSize,
-//                TextAlignment = TextAlignment.CenterLeft,
-//                IsBold = true,
-//            };
-//            titleView.AddChidren(btnTitle);
-
-//            titleView.AddChidren(new Button() {
-//                X = Application.GetRealWidth(16),
-//                Y = Application.GetRealHeight(43),
-//                Height = Application.GetRealHeight(1),
-//                BackgroundColor = CSS_Color.DividingLineColor,
-//            });
-//            #endregion
-
-//            contentView = new VerticalScrolViewLayout()
-//            {
-//                Y = titleView.Bottom,
-//                Height = Application.GetRealHeight(420),
-//                //BackgroundColor = CSS_Color.MainBackgroundColor,
-//            };
-//            bodyView.AddChidren(contentView);
-
-//            LoadMemberRow();
-
-//            btnOption = new Button()
-//            {
-//                Y = Application.GetRealHeight(519 + 64),
-//                Gravity = Gravity.CenterHorizontal,
-//                Width = Application.GetRealWidth(220),
-//                Height = Application.GetRealWidth(44),
-//                BackgroundColor = CSS_Color.MainColor,
-//                TextAlignment = TextAlignment.Center,
-//                TextColor = CSS_Color.MainBackgroundColor,
-//                TextID = StringId.ConfirmShared,
-//                TextSize = CSS_FontSize.SubheadingFontSize,
-//                IsBold = true,
-//                Radius = (uint)Application.GetRealWidth(22),
-//                BorderColor = 0x00000000,
-//                BorderWidth = 0,
-//            };
-//            bodyView.AddChidren(btnOption);
-
-//            LoadEvent_SharedData();
-//        }
-
-//        /// <summary>
-//        /// 鍔犺浇鎴愬憳鍒楄〃鍖哄煙
-//        /// </summary>
-//        void LoadMemberRow()
-//        {
-//            contentView.RemoveAll();
-
-//            int index = 1;
-//            foreach (var mInfo in memberList)
-//            {
-//                FrameLayout memberRow = new FrameLayout()
-//                {
-//                    Height = Application.GetRealWidth(65),
-//                    BackgroundColor = CSS_Color.MainBackgroundColor,
-//                };
-//                contentView.AddChidren(memberRow);
-
-//                var memberHeadImageView = new ImageView()
-//                {
-//                    X = Application.GetRealWidth(16),
-//                    Gravity = Gravity.CenterVertical,
-//                    Width = Application.GetMinRealAverage(36),
-//                    Height = Application.GetMinRealAverage(36),
-//                    Radius = (uint)Application.GetMinRealAverage(24),
-//                    ImagePath = mInfo.headImagePagePath,
-//                };
-//                memberRow.AddChidren(memberHeadImageView);
-
-//                Button btnMemberName = new Button()
-//                {
-//                    X = Application.GetRealWidth(64),
-//                    Y = Application.GetRealWidth(10),
-//                    //Width = Application.GetRealWidth(300),
-//                    Height = Application.GetRealWidth(24),
-//                    TextAlignment = TextAlignment.CenterLeft,
-//                    TextColor = CSS_Color.FirstLevelTitleColor,
-//                    TextSize = CSS_FontSize.TextFontSize,
-//                    Text = mInfo.UserName,
-//                };
-//                memberRow.AddChidren(btnMemberName);
-
-//                Button btnMemberMail = new Button()
-//                {
-//                    X = Application.GetRealWidth(64),
-//                    Y = btnMemberName.Bottom,
-//                    //Width = Application.GetRealWidth(300),
-//                    Height = Application.GetRealWidth(21),
-//                    TextAlignment = TextAlignment.CenterLeft,
-//                    TextColor = CSS_Color.PromptingColor1,
-//                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-//                    Text = mInfo.Account,
-//                };
-//                memberRow.AddChidren(btnMemberMail);
-
-//                Button btnChoose = new Button()
-//                {
-//                    X = Application.GetRealWidth(331),
-//                    Gravity = Gravity.CenterVertical,
-//                    Width = Application.GetMinRealAverage(28),
-//                    Height = Application.GetMinRealAverage(28),
-//                    UnSelectedImagePath = "Public/ChooseIcon.png",
-//                    SelectedImagePath = "Public/ChooseOnIcon.png",
-//                    IsSelected = true,
-//                };
-//                memberRow.AddChidren(btnChoose);
-
-//                if (memberList.Count > index)
-//                {
-//                    memberRow.AddChidren(new Button()
-//                    {
-//                        Y = Application.GetRealHeight(64),
-//                        Gravity = Gravity.CenterHorizontal,
-//                        Width = Application.GetRealWidth(343),
-//                        Height = Application.GetRealHeight(1),
-//                        BackgroundColor = CSS_Color.DividingLineColor,
-//                    });
-//                }
-//                index++;
-
-//                var eventHandler = LoadEvent_ChangeSharedList(btnChoose, mInfo);
-//                btnChoose.MouseUpEventHandler = eventHandler;
-//                btnMemberName.MouseUpEventHandler = eventHandler;
-//                btnMemberMail.MouseUpEventHandler = eventHandler;
-//            }
-//        }
-//    }
-//}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFaceManagementPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFaceManagementPage.cs
index db9bf9a..8321a12 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFaceManagementPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFaceManagementPage.cs
@@ -29,12 +29,14 @@
         public void LoadPage()
         {
             bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
-            new TopViewDiv(bodyView, memberInfo.nickName).LoadTopView();
+            var topView = new TopViewDiv(bodyView, memberInfo.nickName);
+            topView.maginY = 10;
+            topView.LoadTopView();
 
             #region 浜鸿劯绠$悊
             var btnMemberFaceTitle = new Button()
             {
-                Y = Application.GetRealHeight(80),
+                Y = Application.GetRealHeight(80+10),
                 X = Application.GetRealWidth(16),
                 Height = Application.GetRealHeight(32),
                 TextColor = CSS_Color.FirstLevelTitleColor,
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPage.cs
index d4f4569..beb7360 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPage.cs
@@ -84,11 +84,13 @@
         public void LoadPage(int tId)
         {
             titleId = tId;
-            new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView();
+            var topView = new TopViewDiv(bodyView, Language.StringByID(titleId));
+            topView.maginY = 10;
+            topView.LoadTopView();
 
             allRoomView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(64),
+                Y = Application.GetRealHeight(64+10),
                 Height = Application.GetRealHeight(50),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
@@ -128,8 +130,8 @@
 
             contentView = new VerticalScrolViewLayout()
             {
-                Y = Application.GetRealHeight(64+50),
-                Height = Application.GetRealHeight(450),
+                Y = Application.GetRealHeight(64+50+10),
+                Height = Application.GetRealHeight(450-10),
             };
             bodyView.AddChidren(contentView);
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs
index d008e3f..96c583b 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs
@@ -29,24 +29,6 @@
                 //鏄惁闇�瑕佷繚瀛�
                 new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.IfNeedToSave, action);
 
-                //if (titleId == StringId.PermissionToUse)//浠庝釜浜轰腑蹇冭繘鍏ュ崟鐙垎浜�
-                //{
-                //    Action action = () =>
-                //    {
-                //        UploadShareDeviceList();
-                //    };
-                //    //鏄惁闇�瑕佷繚瀛�
-                //    new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.IfNeedToSave, action);
-                //}
-                //else
-                //{
-                //    //var sharedBytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(funs_New));
-                //    //2020-12-01 灞忚斀椤甸潰
-                //    //var page = new ChooseShareMemberTargetListPage(funs_New, memberInfo);
-                //    //MainPage.BasePageView.AddChidren(page);
-                //    //page.LoadPage();
-                //    //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                //}
             };
         }
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPage.cs
index dcf64c7..0d70570 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPage.cs
@@ -31,11 +31,13 @@
         public void LoadPage()
         {
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
-            new TopViewDiv(bodyView, Language.StringByID(StringId.MemberPermissionManagement)).LoadTopView();
+            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.MemberPermissionManagement));
+            topView.maginY = 10;
+            topView.LoadTopView();
 
             FrameLayout headPortraitView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(64),
+                Y = Application.GetRealHeight(64+10),
                 Height = Application.GetRealHeight(66),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs
index be1fc7d..f27995e 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs
@@ -270,6 +270,7 @@
                         BorderColor = CSS.CSS_Color.DividingLineColor,
                         BorderWidth = 3,
                         TextColor = CSS.CSS_Color.TextualColor,
+                        Radius = 1,
                     };
                     searchView.AddChidren(searchTv);
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
index 1228ec0..85a2377 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
@@ -242,7 +242,7 @@
 
             if (MainPage.Increase)
             {
-                bodyScrolView.Height = Application.GetRealHeight(541);
+                bodyScrolView.Height = Application.GetRealHeight(541-10);
             }
 
             headPortraitView = new FrameLayout()
@@ -858,16 +858,9 @@
 
             #endregion
 
-            bodyView.AddChidren(new Button()
-            {
-                Y = Application.GetRealHeight(622),
-                Height = 1,
-                BackgroundColor = CSS_Color.DividingLineColor,
-            });
-
             btnLogout = new Button()
             {
-                Y = Application.GetRealHeight(623),
+                Y = Application.GetRealHeight(624),
                 Height = Application.GetRealHeight(50),
                 TextAlignment = TextAlignment.Center,
                 TextSize = CSS_FontSize.SubheadingFontSize,
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs
index 2443d5c..314964b 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs
@@ -44,9 +44,11 @@
         /// </summary>
         public void LoadPage()
         {
-            new TopViewDiv(bodyView, Language.StringByID(StringId.DataManagement)).LoadTopView();
+            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.DataManagement));
+            topView.maginY = 10;
+            topView.LoadTopView();
 
-            int bodyY = Application.GetRealHeight(64);
+            int bodyY = Application.GetRealHeight(64+10);
             bodyScrolView = new VerticalScrolViewLayout()
             {
                 Y = bodyY,
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPage.cs
index d0d0372..118ee74 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPage.cs
@@ -57,12 +57,14 @@
         public void LoadPage()
         {
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
-            new TopViewDiv(bodyView, Language.StringByID(StringId.LocationManagement)).LoadTopView();
+            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.LocationManagement));
+            topView.maginY = 10;
+            topView.LoadTopView();
 
             contentView = new VerticalScrolViewLayout()
             {
-                Y = Application.GetRealHeight(64),
-                Height = Application.GetRealHeight(667 - 64),
+                Y = Application.GetRealHeight(64+10),
+                Height = Application.GetRealHeight(667 - 64-10),
             };
             bodyView.AddChidren(contentView);
 

--
Gitblit v1.8.0