gpt4 book ai didi

java - 如何以编程方式正确获取操作栏大小?

转载 作者:行者123 更新时间:2023-12-02 10:06:59 25 4
gpt4 key购买 nike

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

我尝试了这段代码

  params = (CoordinatorLayout.LayoutParams) myrv.getLayoutParams();

public void changeRecyclerViewPosition() {
params.setMargins(0, android.R.attr.actionBarSize, 0, 0);
myrv.setLayoutParams(params);
}

因此,当单击 Button 时,RecyclerView 消失。

因此,我尝试记录 android.R.attr.actionBarSize 值,但它太大 (2130903043)。

我想结果可能是像素,需要转换为dp。

那么你们能向我解释一下出了什么问题以及该行为背后的原因吗?

编辑:

  <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp"
tools:context=".Activities.LoadSavedCoffretDataActivity">


<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@android:color/white"
app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<ImageView
android:id="@+id/cancel_img"
android:layout_marginTop="?attr/actionBarSize"
android:elevation="5dp"
android:layout_width="48dp"
android:layout_height="48dp"
android:src="@drawable/cancel" />

<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview_id"
android:layout_marginTop="?attr/actionBarSize"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal">

<ImageView
android:id="@+id/delete_img"
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@drawable/ic_delete_forever_black_24dp"/>

</LinearLayout>

最佳答案

您可以通过以下方式获取操作栏高度

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);
}

关于java - 如何以编程方式正确获取操作栏大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55283552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com