zoukankan      html  css  js  c++  java
  • Android:EditText焦点触发布局隐藏以及显示

    有的时候,我们想实现这种效果。就是当EditText是处在焦点状态的时候,把上部分的布局给隐藏掉。

    当其不处在焦点状态,又全部显示。为了实现这种效果,我们需要进行如下处理:

    首先,自定义个ImageView

    public class ImageViewCareIME extends ImageView{
        ImeUiChangeListener mImeUiChangeListener;  
        private int mPreBottom = 0;  
        
        public ImageViewCareIME(Context context){  
            // TODO Auto-generated constructor stub  
            super(context);  
        }  
    
        public static interface ImeUiChangeListener{  
            public void onImeUiChange(int bottom);  
        }  
          
        public void setOnImeUiChangeListener(ImeUiChangeListener imeUiChangeListener){  
            mImeUiChangeListener = imeUiChangeListener;  
        }  
          
        @Override   
        protected void onDraw(Canvas canvas){  
            super.onDraw(canvas);  
              
            Rect r = new Rect();  
            if(getGlobalVisibleRect(r)){  
                
                if(r.bottom != mPreBottom){  
                    mPreBottom = r.bottom;  
                      
                    System.out.println("Change:   " + r.bottom);  
                    if(null != mImeUiChangeListener)  
                        mImeUiChangeListener.onImeUiChange(r.bottom);  
                    }  
                }  
            }  
    }  

    在Activity界面

            ImageViewCareIME imgTemp = new ImageViewCareIME(this);
            this.addContentView(imgTemp, new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.FILL_PARENT));
            DisplayMetrics dm = new DisplayMetrics();
            this.getWindowManager().getDefaultDisplay().getMetrics(dm);
            this.screenHeight = dm.heightPixels;
            imgTemp.setOnImeUiChangeListener(new ImageViewCareIME.ImeUiChangeListener() {
    
                @Override
                public void onImeUiChange(int bottom) {
                    if (AppraiseActivity.this.screenHeight == bottom) {
                        editText.clearFocus();
                        layout.setVisibility(View.VISIBLE);
                    } else {
                        editText.requestFocus();
                        editText.setFocusable(true);
                        layout.setVisibility(View.GONE);
                    }
                }
            });

    最后可能要在mainfest文件中把当前的Activity设置为

    android:windowSoftInputMode="adjustResize|stateHidden"

     

  • 相关阅读:
    [C++设计模式]observer 观察者模式
    Codeforces 425A Sereja and Swaps(暴力枚举)
    linux中设置TAB键的宽度
    iOS 常见面试图总结2
    网络爬虫初步:从訪问网页到数据解析
    大数据时代之hadoop(二):hadoop脚本解析
    数据格式,訪问信息以及操作数指示符
    javaScript实现日历控件
    每一个程序猿都须要了解的一个SQL技巧
    OpenGL编程逐步深入(九)插值处理
  • 原文地址:https://www.cnblogs.com/gongcb/p/2494508.html
Copyright © 2011-2022 走看看