0

プログラマーの人生で初めて何かを尋ねるのはこれだと思います。以前は、自分で、またはインターネットで解決策を見つけることができました。しかし、ここで、私はあきらめます...

タイトルについては、もちろんViewGroupは抽象的ですが、アイデアは「リスト」内の他の多くの子要素を処理できる要素を持つことです。

ここに問題があります。ViewGroup(または他の子孫クラス)があり、スクロールバーや一部の要素を切り捨てずに、このスペースにできるだけ多くの要素を追加したいとします。要素は上下になります。たとえば、4.65要素がこの空きスペースに収まる場合、4つだけが追加されます。5番目を追加すると、要素が切り捨てられます。これは、5つの要素を追加するのに十分なスペースがないためです。

(この場合は)LinearLayourで使用可能なスペースを計算し、それを測定するための「パイロット」要素を追加して、他にいくつ追加できるかを知るなど、いくつかのことを試しました。しかし、これは機能していません。「パイロット」要素によって返される高さが正しくありません。

私はたくさんのことを試したので、ここですべてを説明することはできませんが、それを行う方法についていくつかのアイデアがあれば、言ってください。私がこの問題に取り組んでいるのは3日です、それは私を夢中にさせます。

4

1 に答える 1

0

最後に、解決策を見つけました。カスタムの自家製コンポーネントを使用しているため、ここで説明することはできませんが、問題の原因を突き止めることができました。

問題を示すために単純化されたクラスを作成しているときに、実際にはすべてが正しく機能していることに気付きました。そこで、単純化したクラスと自分のプロジェクトのクラスを比較し、ほぼ同じになるまで修正しました。

なぜ問題があるのか​​ わからなくても、問題の原因を見つけました。実際、計算方法 (パイロット要素、スペース計算など) を実行する前に定数を介してテキスト サイズを設定すると、完全に機能します。追加できる要素の数を計算する前であっても、アクセサ (setSize) を呼び出してサイズを変更すると、同じようには機能しません。

計算を行う前に textSize を変更するため、これは非常に奇妙です。同じように動作するはずです。ともかく。私の問題を解決するスレッド/ハンドラーを使用するトリックを見つけました。問題を見つけるのは困難でしたが、なぜそれが起こるのかを理解することは不可能でした。

于 2013-03-25T15:33:07.310 に答える