رفتن به مطلب
  • 0

مخفی نشدن دکمه های گوشی


DexterFstone

سوال

سلام من وقتی برنامما اجرا میگیرم دکمه های گوشی مخفی نمیشه

	#FullScreen: True
	#IncludeTitle: False

اینار را هم ست کردم هم توی دیزاینر هم توی کدها ولی بازم دکمه ها مخفی نمیشن چرا؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

3 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

سلام،

ابتدا باید با دو اصطلاح آشنا شویم:

1-statusbar: نواری در اندروید است که معمولا در بالاترین بخش صفحه نمایش قرار دارد و ابزارهایی مثل نمایشگر درصد باتری، ساعت، آیکون اعلانات و... در آن قرار می گیرند.

2-navigation bar: نواری در اندروید است که معمولا در پایین ترین بخش صفحه قرار دارد و دکمه های Back، Home و Recent در آن قرار دارند.

توجه داشته باشید که FullScreen# فقط مربوط به statusbar و IncludeTitle# هم فقط برای تایتل(تیتر پیشفرض بالای برنامه) است.

بنابراین ما برای پنهان کردن navigation bar باید به شکلی دیگر عمل کنیم(در اینجا از یک روش کاملا استاندارد استفاده می کنیم) :

ابتدا دو کتابخانه Phone و JavaObject را تیک بزنید.

یک متغیر به نام Mainpanel از نوع panel در Globals تعریف کنید. بدین شکل:

Private MainPanel As Panel

حال دو sub زیر را به اکتویتی خود اضافه کنید:

Sub GetRealSize As LayoutValues
	Dim lv As LayoutValues
	Dim p As Phone
	If p.SdkVersion >= 17 Then
		Dim ctxt As JavaObject
		ctxt.InitializeContext
		Dim display As JavaObject = ctxt.RunMethodJO("getSystemService", Array("window")).RunMethod("getDefaultDisplay", Null)
		Dim point As JavaObject
		point.InitializeNewInstance("android.graphics.Point", Null)
		display.RunMethod("getRealSize", Array(point))
		lv.Width = point.GetField("x")
		lv.Height = point.GetField("y")
		Dim window As JavaObject = ctxt.RunMethod("getWindow", Null)
		Dim rect As Rect
		rect.Initialize(0, 0, 0, 0)
		window.RunMethodJO("getDecorView", Null).RunMethod("getWindowVisibleDisplayFrame", Array(rect))
		MainPanel.SetLayoutAnimated(0, 0, rect.Top, lv.Width, lv.Height - rect.Top)
		Log(100%y & ", " & lv.Height)
	Else
		lv.Width = 100%x
		lv.Height = 100%y
	End If
	lv.Scale = 100dip / 100
	Return lv
End Sub

Sub Activity_WindowFocusChanged(HasFocus As Boolean)
	If HasFocus Then
		Try
			Dim jo As JavaObject = Activity
			Sleep(300)
			jo.RunMethod("setSystemUiVisibility", Array As Object(4866))
		Catch
		End Try
		
	End If
End Sub

هرکجا که بخواهیم navigation bar پنهان شود باید این کدها را قرار دهیم(ترجیحا در Activity_Create قرار دهید تا در لحظه اجرای اکتویتی navigation bar پنهان شود) :

	Activity_WindowFocusChanged(True)
	MainPanel.Initialize("")
	Dim lv As LayoutValues = GetRealSize
	Dim jo As JavaObject = Activity
	jo.RunMethod("setBottom", Array(lv.Height))
	jo.RunMethod("setRight", Array(lv.Width))
	Activity.Height = lv.Height
	Activity.Width = lv.Width
	Activity.AddView(MainPanel, MainPanel.Left, MainPanel.Top, MainPanel.Width, MainPanel.Height)
	MainPanel.LoadLayout("Layout") 'در اینجا لایوت خود را در اکتویتی بدین شکل لود کنید

 

نکته: برای پنهان شدن navigation bar باید نسخه اندروید کاربر بالاتر از 4.2 یا برابر با خود 4.2 باشد در غیر اینصورت فقط navigation bar پنهان نخواهد شد و هیچ فورس کلوزی رخ نخواهد داد زیرا از یک دستور شرطی استفاده کردیم و گفتیم که اگر SDKVersion کاربر برابر یا بالاتر از 17 بود دستورات را برای پنهان کردن navigation bar اجرا کن.

نکته: پس از پنهان شدن navigation bar حتی اگر کاربر خودش navigation bar را به سمت بالا بکشد و آن را ظاهر کند، پس از چند ثانیه navigation bar دوباره پنهان خواهد شد.

موفق باشید.:53:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۴/۱۷ در 20:15، Soheil_Miresmaili گفته است:

اول این رو نگاه کنید شاید مشکلتون رو حل کرد

اگر اشتباه نکنم جناب @Salar82  دقیقا سورس چیزی که شما نیاز دارید رو با استفاده از پنل نوشته بودند

بهشون پیام بدید

 

خیلی ممنون جواب داد ولی ی مشکلی هست وقتی صفحه را لمس کنم و دکمه ها ظاهر بشه دیگه ناپدید نمیشه از نظر من مشکلی نیست ولی خب بازم ممنون

و یک مورد دیگه من قشنگ یادمه روی نسخه های قدیمی بیسیک حدودن آپدیت پارسال نیازی به ااین کار نبود خود به خود مخفی میشد دکمه ها وقتی روی حالت تمام صفحه ست میکردم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اول این رو نگاه کنید شاید مشکلتون رو حل کرد

اگر اشتباه نکنم جناب @Salar82  دقیقا سورس چیزی که شما نیاز دارید رو با استفاده از پنل نوشته بودند

بهشون پیام بدید

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...