此方法只适用webView页面不会产生大的变化的情况下,请酌情谨慎使用
首先在分享的按钮一般只在横屏的时候出现,目前网上的说法都是说用标准横屏,但是作为一个标准懒人当然是用现成的X5横屏,所以我们要在横屏的时候调用我们设置分享隐藏的方法,即onConfigurationChanged调用时
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
orientation = 0;
getAllChildViews(); //横屏
} else orientation = 1; //竖屏
}
getAllChildViews();就是我们的隐藏方法
这里说下思路
首先就是我们需要找到需要隐藏的ImageView的id,而现在我们对没有资源名的情况下自然是非常难找,所以我们需要把当前窗口的所有视图取出来(当然会担心耗时的问题,所以后面会把这个方法去掉)
这里就抄下百度的方法
/**
* @note 获取该activity所有view
* @author liuh
* */
public List<View> getAllChildViews() {
View view = this.getWindow().getDecorView();
return getAllChildViews(view);
}
private List<View> getAllChildViews(View view) {
List<View> allchildren = new ArrayList<View>();
if (view instanceof ViewGroup) {
ViewGroup vp = (ViewGroup) view;
for (int i = 0; i < vp.getChildCount(); i++) {
View viewchild = vp.getChildAt(i);
allchildren.add(viewchild);
allchildren.addAll(getAllChildViews(viewchild));
}
}
return allchildren;
}
在拿到所有view后,我们去遍历所有视图,判断是否是Imageview,,来找到我们需要的imageview
int i =0; for (View cview : allchildren){ if (cview instanceof ImageView && i > allchildren.size()/2 && i< allchildren.size() ){ cview.setVisibility(View.INVISIBLE); } i++; }
在依次对比几次后我们就可以定位到我们需要的imagview了
在拿到view后,我们就可以拿到view的id了,然后回到开头横屏方法那里直接从主视图里findbyid,然后setVisibility即可,然后取消掉我们遍历的方法,提升效率
View view = this.getWindow().getDecorView(); View view2 = view.findViewById(35); if (view2!=null) view2.setVisibility(View.INVISIBLE);
此方法只适用webView页面不会产生大的变化的情况下,请谨慎使用
后记
楼主能力有限,未能实现从id找到资源名的方法
public void geResId() { Field[] f; try { f = R.id.class.getDeclaredFields(); for (Field id :f){ Log.e("动态id","name:"+id.getName()+"----"+id.getInt(null) ); } } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } }
之后用反射去动态查找R.id.class也未找到我找到的id,通过
String str = getApplicationContext().getResources().getResourceName(view2.getId());
从项目R文件未找到资源,感觉是包的问题,可能要到X5的包下去找,但是X5的jar文件并没有R文件,最后只能不了了之,凑合着用了
这两个方法就留给大家去尝试吧,如果你有好的方法请留言,给遇到麻烦的网友和我这个菜鸡一点方法