Android View遮挡问题解决方案
2014-03-20 13:10
435 查看
以GridView为例
重载GridView
实现将指定View置顶,以免放大时被其他View遮挡,其他布局也可类似实现
方案一:
package com.example.gridview;
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.GridView;
public class MyGridView
extends GridView {
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
//
TODO Auto-generated constructor stub
setChildrenDrawingOrderEnabled(true);
}
//设置要设为topView的view
public
void setTopView(View v)
{
for(int i = 0; i < getChildCount(); i++)
{
if(getChildAt(i) == v)
{
postion = i;
break;
}
}
}
private
int postion = -1;
//修改绘制顺序
@Override
protected
int getChildDrawingOrder(int childCount,
int i) {
//
TODO Auto-generated method stub
if(childCount > 0 &&
postion != -1)
{
if(i==
postion)
{
return childCount - 1;
}else
if(i == childCount - 1)
{
return
postion;
}else {
return i;
}
}
return i;
}
}
方案二:
重载dispatchDraw,当全部子View绘制后,再次绘制选定的View
@Override
protected
void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
drawChild(canvas,
v, v.getDrawingTime());
}
实现将指定View置顶,以免放大时被遮挡
重载GridView
实现将指定View置顶,以免放大时被其他View遮挡,其他布局也可类似实现
方案一:
package com.example.gridview;
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.GridView;
public class MyGridView
extends GridView {
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
//
TODO Auto-generated constructor stub
setChildrenDrawingOrderEnabled(true);
}
//设置要设为topView的view
public
void setTopView(View v)
{
for(int i = 0; i < getChildCount(); i++)
{
if(getChildAt(i) == v)
{
postion = i;
break;
}
}
}
private
int postion = -1;
//修改绘制顺序
@Override
protected
int getChildDrawingOrder(int childCount,
int i) {
//
TODO Auto-generated method stub
if(childCount > 0 &&
postion != -1)
{
if(i==
postion)
{
return childCount - 1;
}else
if(i == childCount - 1)
{
return
postion;
}else {
return i;
}
}
return i;
}
}
方案二:
重载dispatchDraw,当全部子View绘制后,再次绘制选定的View
@Override
protected
void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
drawChild(canvas,
v, v.getDrawingTime());
}
实现将指定View置顶,以免放大时被遮挡
相关文章推荐
- Android 全屏情况下 webview中输入框被软件盘遮挡问题解决方案
- 【Android】不同的View引起软键盘无法关闭问题解决方案
- Android studio中使用ImageView时android:src属性出错问题解决方案!
- Android中Scrollview与ViewPager冲突问题解决方案
- MPAndroidChart MarkerView的精确点击问题解决方案
- Android WebView 全屏下 输入框被键盘遮挡 问题解决
- Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案
- Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案
- Android WebView 软键盘遮挡输入框问题的解决方法
- Android ViewPager和ScrollView嵌套滚动问题解决方案
- Android ScrollView嵌套ViewPager滑动失效和无法正常滑动冲突问题解决方案
- android软键盘问题解决方案(软键盘占据全屏,软键盘排挤页面布局)
- 解决 Android 中 View 的 setPivotX 和 setPivotY 不生效的问题以及设置缩放中心的方法
- ViewPager如何获取当前的子view( 解决getChildAt(position) 为null的问题)(android__1332)
- Android:解决view.getDrawingCache()返回null的问题
- [置顶] 使用Android的webview将web app打包成安卓的app和解决安卓webview不支持input type=file问题
- Android中ImageView无法居中的问题解决方法
- Android 解决使用SearchView时软键盘不支持actionSearch的问题
- Android 输入法键盘和activity页面遮挡问题解决