[在Android中滚动时如何获取AppBar的大小

问题描述 投票:0回答:1

在我的应用程序中,我想获得AppBarLayout的即时大小。我有一个recyclerView,我想在此recyclerView上的scroll最小化布局,为此我使用了AppBarLayout对于此AppBarLayout,我使用listener来获取此视图的大小,但是在登录时,此大小仅向我显示恒定大小!

我的活动代码:

class MainActivity : AppCompatActivity() {

    private lateinit var context: Context

    val animals: ArrayList<String> = ArrayList()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        context = this

        // Loads animals into the ArrayList
        addAnimals()

        // Creates a vertical Layout Manager
        list.layoutManager = LinearLayoutManager(this)

        // Access the RecyclerView Adapter and load the data into it
        list.adapter = AnimalAdapter(animals, this)

        appbar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset ->
            val percentage =
                abs(verticalOffset).toFloat() / appBarLayout.totalScrollRange
            minLay.alpha = percentage
            Log.e("CollapsingToolbarLog",
                "VerOffSet : $verticalOffset --- ScrollRange ${convertPixelsToDp(appBarLayout.height.toFloat(),context)}")
        })
    }

    fun convertPixelsToDp(px: Float, context: Context): Float {
        return px / (context.resources.displayMetrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT)
    }

    fun addAnimals() {
        animals.add("dog")
        animals.add("cat")
        animals.add("owl")
        animals.add("cheetah")
        animals.add("raccoon")
        animals.add("bird")
        animals.add("snake")
        animals.add("lizard")
   }
}

logcat中,始终显示我150对于appBarLayout大小!我滚动布局为什么不减少呢?

我该如何解决?

我该如何解决?

java android android-recyclerview android-collapsingtoolbarlayout android-appbarlayout
1个回答
0
投票

欢迎来到论坛

我使用这个:

假设myMainLayout是您活动的根目录布局,位于AppBar的正下方

public int getAppBarHeight() {
    int [] coords = new int[2];
    myMainLayout.getLocationOnScreen(coords);
    return coords[1];
}
© www.soinside.com 2019 - 2024. All rights reserved.