AppCompatActivity 去掉标题栏和EditText弹出软键盘遮住输入框问题

时间:2022-07-25 16:26:41

1. AppCompatActivity去掉标题栏

此处除掉标题栏,需要注意一点,AppCompactActivity是继承自Activity。然而,AppCompactActivity据查看网上资料得知,其实它貌似没有标题栏,上面显示的标题栏是一个ActionBar控件(PS:即标题栏部分是一个控件,该控件功能还比较强大),因此AppCompactActivity可以对该控件添加相关返回、许多等类似功能按钮,如果不添加这些按钮看起来就像是一个标题栏。

所以,在网上许多去配置value文件夹中的style.xml文件或者在AndroidManifest.xml文件修改theme属性值都是不能有效去掉标题栏的。这些方法仅仅适用所写类继承自Activity的类。

那么继承自AppCompactActivity的类,在onCreateView中加入以下第一行代码即可有效隐藏标题栏,加入两行即可实现占据全屏功能。(PS:经过楼主自己测试普通浏览滑动界面可以隐藏,但是在某些情况下,比如该界面有一个视频播放功能,点击全屏播放,退出全屏后,标题栏可能又无法隐藏。不过一般情况下,隐藏功能还是没问题的)

getSupportActionBar().hide();   //隐藏标题栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //实现全屏,隐藏手机顶部时间相关信息显示

参考资料android开发:activity继承AppCompatActivity 去掉标题栏


2.EditText弹出软键盘遮住输入框问题

具体解释摘抄自一篇网友博客(PS:方便以后自己查阅,原文链接

在AndroidManifest.xml中对应的Activity配置:android:windowSoftInputMode="adjustResize"PS:或者换成"stateVisible|adjustResize"此时会强制弹出软盘

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworld"> <uses-permission android:name="android.permission.INTERNET" /> <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Main2Activity"
android:windowSoftInputMode="adjustResize"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"></activity>
</application> </manifest>

含义:该页面屏幕内容被压缩,以腾出软键盘的空间.

解释它们的含义:

  • stateUnspecified:界面没有设置"android:windowSoftInputMode"时的状态.这个状态是弹出有EditText的界面时时不弹出软键盘的,当EditText获取焦点的时候弹出软件盘
  • stateUnchanged:状态不改变,意思就是和上一个界面相同,上一个界面弹出软键盘,跳转到这个界面时,软键盘也是弹出状态.
  • stateHidden:隐藏键盘,弹出这个界面的时候,不管上个界面是什么状态,这个界面的软键盘都是隐藏的.
  • stateAlwaysHidden:一直隐藏(跟上面的区别未知,试不出来).
  • stateVisible:强制弹出软键盘.跳转到界面后,没有EditText也弹出键盘.
  • stateAlwaysVisible:一直显示键盘(同上).