欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-03-26 17:43:17
此处除掉标题栏,需要注意一点,AppCompactActivity是继承自Activity。然而,AppCompactActivity据查看网上资料得知,其实它貌似没有标题栏,上面显示的标题栏是一个ActionBar控件(PS:即标题栏部分是一个控件,该控件功能还比较强大),因此AppCompact ......
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:一直显示键盘(同上).