and*_*per 4 android android-layout android-softkeyboard android-statusbar
我有一个登录活动,它有一个这样的布局(垂直,从上到下):
我需要全屏显示此活动,隐藏状态栏,当出现软键盘时,请更改布局,以便显示上面显示的#3.
似乎这些要求的组合很成问题.
我有两个主要问题:
我为感测所显示的软键盘做了什么 - 虽然它在其他活动中运行良好,但似乎在这里不起作用.
当软键盘出现时,它会重新显示状态栏,或者将内容移动到底部区域(#3)上方而不是调整大小,同时还将按钮隐藏在底部(#3)并仅显示EditText作为软键盘上方的第一个视图.
由于在显示/隐藏软键盘时无法真正拥有监听器,因此我必须创建一个自定义布局,告诉我其大小何时发生变化.当它的高度减小时,我假设键盘显示,反之亦然.
我试过这种方式来隐藏状态栏:
requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)
而这样:
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
} else
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)这是当前布局的简短描述:
<LayoutSizeChangedSensorFrameLayout>
<RelativeLayout>
#1
<LinearLayout vertical, aligned to parent-top>
<ImageView/>
<TextView/>
<CirclePageIndicator/>
</LinearLayout>
#2
<ImageView aligned to parent-bottom, and below #1 />
<ViewPager aligned to the ImageView from all sides/>
#3
<LinearLayout vertical, aligned to the parent-bottom>
<TextView/>
<EditText/>
<Button/>
</LinearLayout>
</RelativeLayout>
</LayoutSizeChangedSensorFrameLayout>
Run Code Online (Sandbox Code Playgroud)
这是活动的主题:
<style name="AppTheme.Material" parent="@style/Theme.AppCompat.Light.DarkActionBar">
...
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowTranslucentNavigation" tools:ignore="NewApi">true</item>
<item name="android:windowTranslucentStatus" tools:ignore="NewApi">true</item>
<item name="android:navigationBarColor" tools:ignore="NewApi">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
如何隐藏状态栏不能永久工作,或者它会影响显示软键盘时显示的内容?
为什么我的自定义布局无法感知软键盘显示?
有没有其他方法可以实现我的尝试?
小智 7
通过执行以下两个步骤,我设法在软键盘显示时隐藏状态栏:
在活动的onCreate中添加以下内容:
//No title bar is set for the activity
requestWindowFeature(Window.FEATURE_NO_TITLE);
//Full screen is set for the Window
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)设置windowFullscreen为true主题:
<style name="CustomTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowFullscreen">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)不幸的是,这不是一个完整的答案,但它可能会帮助你获得一些方法.
| 归档时间: |
|
| 查看次数: |
2651 次 |
| 最近记录: |