android - Resources.getDimensionPixelSize不等于View.getHeight

时间:2015-11-05 11:04:39

标签: android view resources height size

有没有人知道为什么以下方法调用的高度不同?

  1. Resources.getDimensionPixelSize 返回23(S4 Mini),60(S6 Edge)
  2. View.getHeight 返回27(S4 Mini),68(S6 Edge)
  3. 高度在dimens.xml中指定:

    <dimen name="entry_height">15dp</dimen>
    

    这是Java代码:

    View entry = findViewById(R.id.entry);
    int itemHeight1 = entry.getHeight();
    int itemHeight2 = getResources().getDimensionPixelSize(R.dimen.entry_height);
    

    entry.xml是一个简单的LinearLayout,具有修复高度:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@id/entry" android:gravity="right"
        android:layout_width="match_parent" 
        android:layout_height="@dimen/entry_height">
    
        ...
    
    </LinearLayout>
    

    我想声明使用getDimensionPixelOffset而不是getDimensionPixelSize并不能解决问题。

1 个答案:

答案 0 :(得分:0)

我可以解决它。问题是由我的布局文件引起的。如果LinearLayout视图中有任何具有修复高度属性的视图,则忽略LinearLayout的高度。