Java中的setPeekHeight()与xml

时间:2018-10-28 18:54:14

标签: java android xml bottom-sheet

我正在使用我的应用程序中的底表。

<include
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        layout="@layout/layout_book"

        app:layout_behavior="@string/bottom_sheet_behavior"
        app:behavior_peekHeight="0dp"
        />

这是我的工作表,当我将偷看高度从此xml更改为120dp时,我得到了正确的视图。 但是,当尝试从Java执行相同操作时,我得到了不同的结果,即高度比xml中的高度小。

bottomSheetBehavior.setPeekHeight(120);

理想情况下不应该这样。我对此一无所知。 谢谢。

1 个答案:

答案 0 :(得分:1)

setPeekHeight()(以及许多其他与尺寸/尺寸有关的方法)采用 pixel 值作为参数。这意味着您需要先将dp值转换为px。最好的方法是定义一个dimen资源值,然后在代码中获取它:

<dimen name="peek_height">120dp</dimen>
int peekHeightPx = context.getResources().getDimensionPixelSize(R.dimen.peek_height);
bottomSheetBehavior.setPeekHeight(peekHeightPx);

或者,您可以使用DisplayMetrics自己进行计算:

int peekHeightPx = (int) (context.getResources().getDisplayMetrics().density * 120);
bottomSheetBehavior.setPeekHeight(peekHeightPx);