如何在代码中获取控件大小,修改控件显示大小
2012-09-09 23:26
344 查看
问题?
1、如何在代码中获取控件在布局文件中宽、高的值,
2、并修改其大小即修改控件的显示比例?
下面用Imageview控件举例来实现此过程。
代码如下:
小结:
首先应明确一点,竟然我们可以在代码中进行布局,我们就应该有办法对布局中的控件进行大小修改。就如在代码中配置文件中可以设置Acitivity横竖屏自感应,同样可以在代码中实现。
在Acitivity中我们常通过Display来获取屏幕高度和宽度,实现代码如:
2、在代码中想改变某个控件的大小,得通过setLayoutParams()来实现,暂还没看到其他方法,若有知道的请指点。
注:参考网站
http://xindrace.iteye.com/blog/1564903
附:demo在资源里面
http://download.csdn.net/detail/sunnyfans/4559438
1、如何在代码中获取控件在布局文件中宽、高的值,
2、并修改其大小即修改控件的显示比例?
下面用Imageview控件举例来实现此过程。
代码如下:
public class GetWidgetSize extends Activity { int imageOriginalHeight = 0; int imageOriginalWidth = 0; boolean firstFlag = true; ImageView image = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); image = (ImageView) findViewById(R.id.image); /* * 通过setLayoutParams(new LinearLayout.LayoutParams())来还原布局中设置的高度,宽度 */ Button getBtn = (Button) findViewById(R.id.button1); getBtn.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { image.setLayoutParams(new LinearLayout.LayoutParams( imageOriginalWidth, imageOriginalHeight)); } }); /* * 通过setLayoutParams(new LinearLayout.LayoutParams())来设置控件显示的大小 */ Button setBtn = (Button) findViewById(R.id.button2); setBtn.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { image.setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); } }); /* * 通过这种方法获取image控件在手机里面显示出来的高度和宽度 */ ViewTreeObserver vto = image.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { public void onGlobalLayout() { if (firstFlag == true) { firstFlag = false; imageOriginalHeight = image.getMeasuredHeight(); imageOriginalWidth = image.getMeasuredWidth(); System.out.println("imageHeight=" + imageOriginalHeight + " imageWidth==" + imageOriginalWidth); } } }); } /* * 重写菜单键,退出程序 */ public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuItem item = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "Exit"); item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { System.exit(0); return true; } }); return true; } }
小结:
首先应明确一点,竟然我们可以在代码中进行布局,我们就应该有办法对布局中的控件进行大小修改。就如在代码中配置文件中可以设置Acitivity横竖屏自感应,同样可以在代码中实现。
在Acitivity中我们常通过Display来获取屏幕高度和宽度,实现代码如:
Display display = getWindowManager().getDefaultDisplay(); int height = display.getHeight(); int width = display.getWidth();但若获取某个控件的高度和宽度,尝试过的哥们都知道,在Acitivity的oncreate()和onPostResume()里都不能获取到控件的大小,通过控件.getHeight()方法得到的都是0,想想原因,在执行onresume后,控件才显示出来,于是oncreate里面获取到0值就可以理解了,至于onPostResume()里面还是0值,还只是想当然,若确定原因,还望指点。了解这些,我们就是通过button点击事件可以获取某个控件的高宽度。
2、在代码中想改变某个控件的大小,得通过setLayoutParams()来实现,暂还没看到其他方法,若有知道的请指点。
注:参考网站
http://xindrace.iteye.com/blog/1564903
附:demo在资源里面
http://download.csdn.net/detail/sunnyfans/4559438
相关文章推荐
- JS和JQuery中如何获取和修改控件显示内容(如lable,div,h1)
- JS和JQuery中如何获取和修改控件显示内容(如lable,div,h1)
- 如何在后台代码获取控制EditItemTemplate的控件
- 如何动态调整控件大小和隐藏控件显示
- EAS 动态扩展后的控件,在BOS开发代码中如何获取。
- MFC对话框应用程序 如何在对话框窗口显示前获取窗口(控件)的屏幕坐标位置
- Source Insight如何改变代码显示大小
- 如何修改Magento前台显示的产品图片的尺寸大小
- asp.net服务端代码如何获取客户端控件的值(HTML控件)
- 如何在WebBrowser1控件直接显示memo1里面的代码
- XMPP框架 微信项目开发之Socket聊天室发送数据——获取键盘高度,修改控件的约束值,代码滚动UITabView到指定位置
- 带客户端脚本的图片控件,可利用后台代码修改图片显示(C#代码)
- 如何通过代码获取当前正在显示的控制器
- 如何修改Magento前台显示的产品图片的尺寸大小
- 设置批量商品优惠、如何修改ZenCart产品显示图片的大小
- 牛腩购物9 用户表设计/动软生成器/金钱字段decimal(18, 2)/ 注册的时候的前台js判断/后台代码判断/正则表达式软件/RegexBuddy/设置数据库字段的唯一性约束/如何获取控件在前台html的id值/如何将C#的后台正则换成js的正则
- 如何修改Recovery的字符串资源(修改显示字体颜色和大小)
- WKWebView如何加载Html代码? WKWebView如何修改字体大小和颜色?
- VB,Visual Basic如何修改代码文本大小和字体
- 如何在activity和fragment获取控件的大小