状态栏一体化及其带来的软键盘自适应问题(二)

来源:互联网 发布:2016年网络搜索话题 编辑:程序博客网 时间:2024/06/04 19:45

这篇是在状态栏一体化的基础上谈一下软键盘的自适应问题,有需要可以先看一下上篇介绍的状态栏一体化实现[状态栏一体化及其带来的软键盘自适应问题 ]
(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 是一个关于状态栏操作的开源库,可以自己在网上下载~~~~

1 0
原创粉丝点击