在哪个州的活动衡量它的观点

时间:2015-11-26 12:27:28

标签: android view measure

我创建了一个自定义的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。 所以我想知道在哪个状态下测量视图,这样我就可以在屏幕上显示正确的值。

3 个答案:

答案 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'; 来了解布局何时完成。