这篇是在状态栏一体化的基础上谈一下软键盘的自适应问题,有需要可以先看一下上篇介绍的状态栏一体化实现[状态栏一体化及其带来的软键盘自适应问题 ]
(http://blog.csdn.net/yiy91/article/details/51150516)
在上篇中一体化 简单介绍了下android:fitsSystemWindows=”true”;而软件盘问题也正是由它所带来的;在上篇代码的基础上,在activity_main.xml中添加一个输入框,效果图
在AndroidManifest.xml里Mainactivity中添加android:windowSoftInputMode=”adjustResize|stateHidden”
运行后 点击输入框,弹出软件盘 就会出现如下效果
啊哦,我们标题栏的文字没有了~~~问什么会这样呢,此时我们只要将adjustResize改成adjustPan或者直接去掉就ok了。adjustResize、adjustPan等属性这里就不多介绍了,总结结果就是这样子。。上图
但是,有时候我们需要adjustResize时怎么办呢,比如说qq的聊天界面,输入框在最屏幕最底部,我们需要点击它时弹出软键盘,同时输入框上移。这个时候adjustResize就是必要的。直接说我的解决办法。此时标题栏不再用之前自定义的那个,重新布局,将android:fitsSystemWindows=”true”放在activity根布局里activity_new2.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:background="#8C8C8C">
<RelativeLayout
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#1f9ff9"
android:clipToPadding="true">
<RelativeLayout
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@android:color/transparent"
android:layout_alignParentLeft="true">
<ImageView
android:id="@+id/title_iv_back"
android:layout_width="8dp"
android:layout_height="14dp"
android:layout_centerInParent="true"
android:layout_marginLeft="15dp"
android:src="@drawable/back" />
</RelativeLayout>
<TextView
android:id="@+id/title_tv_name"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:background="@android:color/transparent"
android:ellipsize="end"
android:maxWidth="240dp"
android:singleLine="true"
android:text="标题"
android:textColor="@android:color/white"
android:textSize="18sp"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:gravity="center" />
</RelativeLayout>
<EditText
android:layout_width="match_parent"
android:layout_height="60dp"
android:id="@+id/editText"
android:layout_alignParentBottom="true"
android:background="@drawable/seabar_input"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:hint="点击输入..."
android:textColorHint="#8C8C8C"/>
</RelativeLayout>
NewActivity2.java:
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
/**
* Created on 2016/4/15.
*/
public class NewActivity2 extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new2);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
winParams.flags |= bits;
win.setAttributes(winParams);
SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintResource(R.color.title_color);
}
}
}
配置:
<activity android:name=".NewActivity2"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize|stateHidden">
</activity>
效果图:
SystemBarTintManager.java 是一个关于状态栏操作的开源库,可以自己在网上下载~~~~