键盘向上滚动并隐藏Android上的工具栏和状态栏
问题描述:
我想在显示软键盘时保持状态栏和工具栏在顶部可见。我尝试了很多方法,但做不到。尝试windowSoftInputMode和设置/清除窗口的标志,但都失败了。 任何人都可以帮助我吗? Please click here to see gif file!键盘向上滚动并隐藏Android上的工具栏和状态栏
答
这是一个Xamarin错误。见here。
有一些workaronds。你必须做到以下几点在MainActivity:
protected override void OnCreate(Bundle bundle)
{
ToolbarResource = Resource.Layout.toolbar;
TabLayoutResource = Resource.Layout.tabs;
base.OnCreate(bundle);
//Remove the status bar underlay in API 21+
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
{
Window.DecorView.SystemUiVisibility = 0;
var statusBarHeightInfo = typeof(FormsAppCompatActivity).GetField("_statusBarHeight", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
statusBarHeightInfo.SetValue(this, 0);
Window.SetStatusBarColor(new Android.Graphics.Color(18, 52, 86, 255));
}
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
App.Current.On<Xamarin.Forms.PlatformConfiguration.Android>().UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize);
}
如果使用FormsApplicationActivity代替FormsAppCompatActivity,那么你必须删除下列行:
var statusBarHeightInfo = typeof(FormsAppCompatActivity).GetField("_statusBarHeight", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
statusBarHeightInfo.SetValue(this, 0);
你可以看到吉米·加里多here更多细节。
但隐藏动作条,如果您在MainActivity使用下面的代码,所以只有上述方案的将无法正常工作:
Xamarin.Forms.Forms.SetTitleBarVisibility(Xamarin.Forms.AndroidTitleBarVisibility.Never);
要解决该问题,什么工作对我来说是删除上面的这一行,并创建一个特定的主题,使ActionBar消失。
下的资源/价值/ Styles.xml我创建了一个新的主题(你可以改变你的,如果你已经有一个):
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarSize">0dp</item>
</style>
</resources>
而且不要忘记设置主题MainActivity,如:
[Activity(WindowSoftInputMode = SoftInput.AdjustPan, Label = "Test", Icon = "@drawable/icon", Theme = "@style/MyTheme", MainLauncher = true, NoHistory = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
我希望这可以帮助你。
请问您是否可以发布您的布局和活动代码?并且为windowSoftInputMode设置了什么值? –