有没有办法测量底部导航栏的高度(以像素为单位)?
答案 0 :(得分:6)
顺便说一句......对于像我这样偶然发现这个问题寻找实际数字的人来说,这是48像素(至少在摩托罗拉Xoom上)。这是基于此(通常是粗略的)测试活动的调试输出,结合没有标题栏的主题(例如,@ android:style / Theme.NoTitleBar)和单一视图LinearLayout,其高度和宽度都设置为“ match_parent“(例如,创建新Android应用时创建的那个):
package com.sample.layouttest;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnLayoutChangeListener;
public class Main extends Activity implements OnLayoutChangeListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View newView = getLayoutInflater().inflate(R.layout.main, null);
newView.addOnLayoutChangeListener(this);
setContentView(newView);
}
@Override
public void onLayoutChange(View view, int left, int top, int right,
int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
Log.d("LayoutTest","left="+left+", top="+top+", right="+right+", bottom="+bottom);
}
}
在运行Android 3.1的Motorola Xoom(以及运行3.0的Samsung Galaxy 10.1V)上,进入纵向模式时onLayoutChange方法的输出为:
05-24 15:11:43.047: DEBUG/LayoutTest(8658): left=0, top=0, right=800, bottom=1232
进入风景时:
05-24 15:13:18.837: DEBUG/LayoutTest(8658): left=0, top=0, right=1280, bottom=752
答案 1 :(得分:4)
同时我找到了解决方案。在honycomb中有一个新的OnLayoutChangeListener
事件,它允许您等待布局完成,然后测量布局的大小而不是屏幕大小。