如何在显示视图之前找到视图的宽度?我不想添加自定义视图并在OnChanged()中点击尺寸。如何在视图显示之前找到视图的宽度?
回答
Display display = getWindowManager().getDefaultDisplay();
View view = findViewById(R.id.YOUR_VIEW_ID);
view.measure(display.getWidth(), display.getHeight());
view.getMeasuredWidth(); // view width
view.getMeasuredHeight(); //view height
请标记为已解决^^ –
您可能还要记住,如果视图没有被充气,它的宽度和高度将会是0. – Joru
您是对的Joru。我使用ViewTreeObserver并解决了我的问题。感谢所有试图回答的人。 –
@dmytrodanylyk - 我认为它会返回宽度&高度为0,所以你需要使用下面的事情
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View contentview = inflater.inflate(R.layout.YOURLAYOUTNAME, null, false);
contentview.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int width = contentview.getMeasuredWidth();
int height = contentview.getMeasuredHeight();
它会给你正确的高度&宽度。
这就是我需要确定是否应该开始一个新的复选框,首先使它成为一个单一的行,然后通过计算宽度来防止溢出...完美谢谢。来自 - > http://stackoverflow.com/a/24054428/1815624 – CrandellWS
您应该使用OnGlobalLayoutListener
,它被视为在视图上进行了更改,但在绘制之前进行了更改。
costumView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
costumView.getWidth();
}
});
我喜欢使用这种技术,因为每my answer on a related question:
邮政从onCreate()
可运行视图已经被创建时将被执行:
contentView = findViewById(android.R.id.content);
contentView.post(new Runnable()
{
public void run()
{
contentHeight = contentView.getHeight();
}
});
该代码将在运行主要UI线程,在onCreate()
完成后。
这是最好的方法......工作!
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (fondo_iconos_height==0) { // to ensure that this does not happen more than once
fondo_iconos.getLocationOnScreen(loc);
fondo_iconos_height = fondo_iconos.getHeight();
redraw_function();
}
}
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
view.measure(size.x, size.y);
int width = view.getMeasuredWidth();
int height = view.getMeasuredHeight();
yourView.measure(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
int yourView= m_hidableRowContainer.getMeasuredHeight();
就是这样。
'measure'需要一对'View.MeasureSpec'整型常量,而不是布局参数常量。 – Tom
- 1. 如何在添加到子视图之前获取UIView的宽度和高度?
- 2. 如何在每次显示视图之前更新iPhone中的视图?
- 3. 如何设置视图的宽度等于任何显示?
- 4. 在显示它之前计算视图度量
- 5. AngularJS视图在显示视图之间切换前的新数据之前快速显示旧数据
- 6. Android布局:两个固定宽度视图之间的可变宽度视图
- 7. 第一次显示之前获取视图宽度/高度或字体宽度/高度/其他尺寸
- 8. iPhone,我如何显示正常视图顶部的小视图并在当前正常视图之间切换?
- 9. 如何显示从表视图到地图视图的注释?
- 10. 如何显示在视图
- 11. 如何在Tabbar控制器之前显示登录视图?
- 12. CakePHP 1.3如何在显示内容之前渲染视图
- 13. 如何在显示mvc视图之前“预处理”ajax调用?
- 14. 在显示您之前显示视图UITabBar
- 15. 如何在显示图库视图之前从SD卡调整图像大小?
- 16. 在显示GLkit视图之前添加一些视图 - 从UIview导航到GLkit视图
- 17. 将视图宽度设置为组的视图视图
- 18. 显示视图>显示视图
- 19. 如何在图库视图中显示视频,如图像?
- 20. 如何在显示到任何视图或窗口之前通知alertview?
- 21. 获取视图高度和视图宽度之间的最小值
- 22. 如何在播放视频之前显示进度条
- 23. MVVM - 如何显示视图?
- 24. 如何在绘制之前正确测量视图的高度
- 25. 子视图在其超级视图之外显示
- 26. 的视图显示访问详细信息视图绑定数据之前
- 27. 如何隐藏在网页视图前根据用户输入显示视图
- 28. UITableView标题视图宽度
- 29. 如何在单元格在桌面视图中显示视图
- 30. 如何在执行计算任务之前将视图添加到视图中
你到底想要什么?描述更多 –