`
fanguanghui
  • 浏览: 98379 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

Android界面控件遍历代码 改变宽度 高度 字体大小适应屏幕

阅读更多

1.遍历界面控件

 

用instanceof来判断是否是指定的控件类型

LinearLayout myLayOut = (LinearLayout)findViewById(R.id.tableLayout1);

LinearLayout 是父控件名称,根据你自己的修改

 

可以用这句得到

LinearLayout loginLayout = (LinearLayout) getLayoutInflater().inflate(R.layout.main, null);

 

for (int i = 0; i < myLayOut.getChildCount(); i++) {

View v = myLayOut.getChildAt(i);
if ( v instanceof ImageView){
ImageView myImageView = (ImageView)myLayOut.getChildAt(i);
myImageView.setOnClickListener(new myOnclickListener());
}
}

注:只能得到一级子View

 

2.适应全屏修改大小

 

changeLayoutParams(R.id.tableLayout1);

 

protected void changeLayoutParams(int layoutId){
  final View view = (View) findViewById(layoutId);
  ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();
  viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    boolean isFirst = true;
            @Override
            public void onGlobalLayout() {
      if (isFirst) {  
             isFirst = false; //执行一次 不这样设置 他会一直执行
                         int height = view.getMeasuredHeight();
                         int width = view.getMeasuredWidth();
                         //viewGroup 适应所有父布局控件
                         ViewGroup.LayoutParams linearParams = (ViewGroup.LayoutParams) view.getLayoutParams();
    		         linearParams.width = (int) (width*scale);
    		         linearParams.height = (int) (height*scale); //在原有的高度 宽度放大倍数
    		        view.setLayoutParams(linearParams);
            	 }
            }
		});
		if(view instanceof TextView){
			((TextView) view).setTextSize( 24  );
		}else if(view instanceof EditText){
			((EditText) view).setTextSize(  24);
		}else if(view instanceof Button){
			((Button) view).setTextSize( 24 );
		}else if(view instanceof RadioButton){
			((RadioButton) view).setTextSize( 24 );
		}
	}

注:文字大小也可以按比例缩放,不过手机与平板表现的不一样

 

分享到:
评论
2 楼 xiangxm 2013-12-19  
zwj2009 写道
请问changeLayoutParams方法你是在什么时间调用呢

我在onCreate方法中调用无效

你可以放在onWindowFocusChanged里面
1 楼 zwj2009 2012-04-06  
请问changeLayoutParams方法你是在什么时间调用呢

我在onCreate方法中调用无效

相关推荐

    Android自定义控件(打造流布局实现热门搜索标签)

    在`onMeasure()`中,我们需要遍历所有的子视图,为它们分配宽度和高度。对于流布局,我们需要考虑当前行的总宽度,如果加上下一个子视图就会超出父视图的宽度,则需要换行。同时,我们还需要处理垂直对齐和水平对齐...

    Android自定义控件(实现状态提示图表)

    在Android开发中,自定义控件是提升应用用户体验和界面个性化的重要手段。本文将深入探讨如何在Android中创建一个自定义控件,用于实现状态提示图表。这种图表能够动态显示数据,非常适合用来实时反馈应用程序的状态...

    多标签自动换行的控件ViewGroup

    在设计用户界面时,有时我们需要创建一个可以显示多个标签并且能自动换行的布局,以适应不同屏幕尺寸和保持界面的可读性。`多标签自动换行的控件ViewGroup`就是解决这个问题的一个自定义组件。 首先,我们要理解`...

    Android自定义控件实现边缘凹凸的卡劵效果

    可以添加更多的属性来控制这些细节,如字体、颜色、圆点大小等,以适应不同的设计需求。 通过这样的自定义控件,开发者可以避免依赖图片资源,从而实现更灵活的布局和更好的屏幕适配。同时,自定义控件也提供了更高...

    Google_Android_SDK开发范例集锦

    介绍如何获取设备的屏幕尺寸信息,包括宽度、高度等参数。 - **3.6 样式化的定型对象** 解释如何使用样式和主题来统一应用界面的设计风格,提高开发效率。 - **3.7 简易的按钮事件** 介绍如何为Button控件绑定...

    TagTextView 每一行添加多个活动标签

    这种控件常用于显示分类标签、热门话题等场景,可以提高用户界面的交互性和信息展示效率。 实现`TagTextView`的基本步骤如下: 1. **创建自定义View**: 首先,你需要创建一个新的类继承自TextView,然后在其中...

Global site tag (gtag.js) - Google Analytics