我创建了一个自定义的ViewGroup ReadPage,在活动中我使用它
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
pager=(ReadPage)findViewById(R.id.readpage);
pager.addArticle("...");
}
虽然addArticle需要视图的宽度和高度
public void addArticle(String s){
articles.add(new Article(s,getMeasuredWidth(),getMeasuredHeight()));
}
但那时的measurewidth和measureheight为0。 所以我想知道在哪个状态下测量视图,这样我就可以在屏幕上显示正确的值。
答案 0 :(得分:1)
这个答案可能会为您提供所需内容:https://stackoverflow.com/a/1016941/213528
您可以这样使用它:
$messages = Message::where('to_user', USER_ID)->get();
答案 1 :(得分:1)
使用ViewTreeObserver
viewToMeasure.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
viewToMeasure.getViewTreeObserver().removeGlobalOnLayoutListener(this);
/* you can get the view's height and width here
using viewToMeasure.getWidth() and viewToMeasure.getHeight()
*/
}
});
答案 2 :(得分:0)
在"测量传递期间有时会测量视图"当View结构发生变化时(由于添加,删除,更新视图),会运行一个度量,然后运行一个布局过程,重新计算视图大小和位置。
例如,您可以随时将文本数据设置为onSizeChanged()
,但视图本身会在准备显示文本数据时决定如何显示文本数据。然后计算文本扭曲等,而不是在设置文本时计算。
您应该将显示addOnLayoutChangeListener()
的视图设计为相似。您可以提供数据,但让View处理并在调用var numberofscroll = 0;
$(window).scroll(function(event){
numberofscroll++;
if($(window).scrollTop() == $(window).height()){ // you reach to window bottom
if(numberofscroll == 1){
// first time scroll
}else if(numberofscroll == 2){
// second time scroll
}else ... so on till you reach to 5
}else{
}
});
时进一步显示。视图还可以使用var discount_div = '40 percent off ';
OR
var discount_div = '0 ';
OR
var discount_div = '108 Rs off';
来了解布局何时完成。