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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yiy91/article/details/51162893

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

猜你喜欢

转载自blog.csdn.net/yiy91/article/details/51162893