何度も尋ねられたAndroidビューの質問があります。しかし、私は必要な答えを決して得ることはできません。 サイズ(高さ)を一定の割合で変更するビューを作成する必要があります。ことは、私はそうするためにはAndroidビューオリジナルの「コンテンツをラップする」私のビューのサイズ
setHeight(percentage){
view.setHeight(Originl * percentage)
}
ような何かをしたい、私は何も変更せずにビューまたは外側のレイアウト(そうなしMatch_Parent)の元の高さを必要としています。 ビューの高さを計算するにはさまざまな方法がありますが、現在の高さは結果として「希望の」高さにはなりません。
たとえば、私はonMeasure()を使用しようとしました。これは、ビューが測定された瞬間ですが、ビューの高さを変更するときに呼び出されるためです。また、ビュー "創造"で何度か行われます。最初の測定値が間違ったデータ(たとえば、2番目のonMeasureが実際の値を返すまでの高さなど)を与えて2回呼び出されることがあるため、最初の値を取ることさえできません。
私は今もすばらしいわけではありませんが、うまくいくようなことをしました。これは、多かれ少なかれ動作するようですが、それが本当に行う方法である私はその
getViewTreeObserver().addOnGlobalLayoutListener(this)
のようにリスナーを追加し、コールバックメソッドでは、私は
override fun onGlobalLayout() {
Log.d("OnGlobalLayout", "Height: $height")
originalHeight = height
getViewTreeObserver().removeOnGlobalLayoutListener(this)
}
をリスナーを削除しますか?私は現在のものが何であっても、予想されるビューのサイズを取得するいくつかのメソッドを期待していました。
どうすればいいですか?
まあを書きたよりその
のような景色のために一度拡張機能を記述することができ、少なくともクリーナーソリューションのthats。しかしこれは本当にこれを行う最善の方法ですか? –