为了账号安全,请及时绑定邮箱和手机立即绑定

对于所有Android UI对象,getHeight返回0

对于所有Android UI对象,getHeight返回0

当年话下 2019-10-21 10:00:25
我正在构建一个UI,并且都是在XML中静态定义的。它所有的地方都有重量,虽然看起来不错,但我想看看所有东西实际上都具有合适的高度。问题是,无论我在哪里为格式布局调用.getHeight(),都得到0。我在onCreate()和onStart()中都尝试过。一样。也会发生所有UI对象。任何想法?package com.app.conekta;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.Window;import android.widget.Button;import android.widget.FrameLayout;import android.widget.Toast;public class Conekta extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        requestWindowFeature(Window.FEATURE_NO_TITLE);        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }    @Override    public void onStart() {        super.onStart();    }    @Override    public void onResume() {        super.onResume();        FrameLayout fl1 = (FrameLayout) findViewById(R.id.headerFrameLayout);        FrameLayout fl2 = (FrameLayout) findViewById(R.id.footerFrameLayout);        Button b=(Button) findViewById(R.id.searchButton);        Log.d("CONEKTA", String.valueOf(b.getHeight()));    }}
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

简而言之,视图尚未内置在onCreate(),onStart()或onResume()中。由于它们在技术上不存在(就ViewGroup而言),因此它们的尺寸为0。


总而言之,您可以在这里找到有关如何处理的更好说明。


如何检索视图的尺寸?


查看完整回答
反对 回复 2019-10-21
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

它为0,因为在onCreate和onStart中,该视图实际上都尚未绘制。您可以通过侦听实际绘制视图的时间来解决此问题:


final TextView tv = (TextView)findViewById(R.id.venueLabel);

final ViewTreeObserver observer= tv.getViewTreeObserver();

       observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

            @Override

            public void onGlobalLayout() {

              tv.getHeight()

              observer.removeGlobalOnLayoutListener(this);

            }

        });

那里有删除监听器的调用,以防止重复调用布局更改中的自定义处理程序...如果要获取这些,则可以省略。


查看完整回答
反对 回复 2019-10-21
?
慕斯王

TA贡献1864条经验 获得超2个赞

使用此功能获取视图的高度或宽度


private int getHeightOfView(View contentview) {

    contentview.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);

    //contentview.getMeasuredWidth();

    return contentview.getMeasuredHeight();

}


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 679 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信