如何以编程方式正确获取actionBar大小?

时间:2019-03-21 15:07:49

标签: java android android-actionbar

当发生time点击时,我需要将RecyclerView的大小向下移动actionBar

我尝试了这段代码

Button

因此,点击 params = (CoordinatorLayout.LayoutParams) myrv.getLayoutParams(); public void changeRecyclerViewPosition() { params.setMargins(0, android.R.attr.actionBarSize, 0, 0); myrv.setLayoutParams(params); } RecyclerView消失。

所以我试图记录Button的值,它太大了(2130903043)。

我认为结果可能在android.R.attr.actionBarSize中,需要将其转换为dp。

那么你们能给我解释一下这是怎么回事以及这种行为背后的原因吗?

编辑:

pixels

2 个答案:

答案 0 :(得分:1)

您可以通过

获取操作栏高度
public void changeRecyclerViewPosition() {
TypedValue tv = new TypedValue();
int actionBarHeight = 0;
if (getActivity().getTheme().resolveAttribute(R.attr.actionBarSize, tv, true))
{
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
}
params.setMargins(0,actionBarHeight, 0, 0);
myrv.setLayoutParams(params);
}

答案 1 :(得分:0)

使用此xml固定应用栏大小 主线是

**android:minHeight="?attr/actionBarSize"**

<com.google.android.material.appbar.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/appBar"
            android:minHeight="?attr/actionBarSize"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent">
        <androidx.appcompat.widget.Toolbar
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/toolBar"
                android:theme="@style/Theme.AppCompat.Light.DarkActionBar"/>
    </com.google.android.material.appbar.AppBarLayout>