我正在使用我的应用程序中的底表。
<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);
理想情况下不应该这样。我对此一无所知。 谢谢。
答案 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);