問題タブ [onmeasure]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - フラグメントが 2 回目に表示されると、Android カスタム ビューのサイズが失われる
SurfaceView から継承するカスタム ビューがあります。このビューは主に描画ベースであり、ビューの幅/高さを知る必要があります。ディメンションは onMeasure メソッド中に計算され、正常に機能しています。
onCreateView メソッドの実行中に、フラグメントで膨張したレイアウトでこのビューを使用します。
このアプリケーションは電話で実行されるため、一度に 1 つのフラグメントのみを表示するため、アクティビティで FragmentManager を使用してフラグメントを「交換」します。このこともうまく機能しています。問題はこれです: - このカスタム ビューを含む Fragment を初めて表示すると、正常に動作します - 次に、別の Fragment を表示します。- 次に、カスタム ビューを含む Fragment を再度表示したい。この時点で onCreateView が再度呼び出され (以下のコードを参照)、カスタム ビューを作成できますが、今回はカスタム ビューの onMeasure メソッドが呼び出されないため、ディメンションを取得できないためにアプリケーションがクラッシュします。
誰かが理由を知っていますか?2回目はレイアウトが解析されていないため、ビューのサイズが計算されていないと思います(または、何か誤解しているかもしれません...)
どうすればそれを機能させることができますか?なぜ onMeasure が初めて呼び出され、その後では呼び出されないのか理解できません。
ご協力ありがとうございました!
android - アスペクト比を持つAndroidレイアウトは、親を参照する子を表示できません
RelativeLayout
縦横比2:1で作ってみました。レイアウトは適切にサイズ変更されておりImageView
、これもRelativeLayout
見栄えがします。しかしTextView
、それは android:layout_centerInParent="true"
表示されません。これは、親の整列、中央などの属性のいずれかを使用すると、そのビューが表示されないためです。それを修正する方法は?
MyRelativeLayout:
正方形のアスペクト比1:1を使用している場合、このコードですべて機能します
android - Android - リスト アイテムの setImage を遅延させると、onMeasure が呼び出され、位置 0 からすべてが再描画されます。
Web からの画像を含む行を表示するリストビューがあります。
行を描画する必要がある場合Adapter.getView(...)
は、バックグラウンドで画像をダウンロードImageView
し、UI スレッドで設定します。これは、ビットマップが遅延して ImageView に設定されていることを意味します。
シンプルな描画可能なリソースで遅延 setImage...() を試しましたが、結果は同じでした。
遅延マンガーでリソースを設定すると、リスト全体が位置0から始まり、表示されていない位置まで再描画されることがわかりました。明らかな問題は、リストのスクロールが遅くてびくびくしていて、スムーズではないことです。
ここで特に注意したいのは、これは少しスクロールしているときに発生することです。新しく見たアイテムは、通常の の一部として描画されmakeAndAddView
ます。しかし、その直後に、表示された行までのすべての行が の一部として描画されmeasureHeightOfChildren
ます。
イメージを遅延せずにすぐに設定しても、onMeasure
が呼び出されることはありません。
では、すべてのリストの再描画を防ぐにはどうすればよいですか?また、即時の setImage と遅延の動作が異なるのはなぜですか?
android - Androidでズームインズームアウトをスムーズに実装するにはどうすればよいですか? RTMP ストリーミングを使用する SurfaceView に関連
SurfaceView オブジェクトで RTMP ストリーミングを再生するときにズームインまたはズームアウトできる機能を実装しています。私はいくつかの調査を行い、最初にサイズと位置を計算し、onMeasure() メソッドを使用してビューを再構築することにしました。
現在、ズーム中に設定した位置にオブジェクトが実際には従わないという問題があります。実装したい効果は、このビデオ(私のアプリの iOS バージョンの動作を示しています) のようなもので、これまでに行ったことを示すために別のビデオを録画しました。iOS版アプリと同じ位置で使用すると、オブジェクトがより頻繁に移動します。まったくスムーズではなく、ユーザー エクスペリエンスが低下する可能性があります。
動作に対する私の観察では、ズーム機能がトリガーされると、SurfaceView のオブジェクトが固定位置 x と y で幅と高さのサイズを変更することがわかりました。次に、オブジェクトは後方に移動します。これは、その親のレイアウトに従うことに起因する可能性があります。ログ メッセージを出力したところ、onMeasure() がトリガーされたときに x と y の位置が変更されていることがわかりました。関数で位置を設定しましたが、プロセスが onLayout() に移動したときに変更されます。onLayout() は onMeasure() が終了するとすぐに呼び出されるため、シフトを回避するために位置を設定するタイミングが考えられません。
以下は私が行ったことです: レイアウト:
そしてコード:
誰でも私を助けることができますか?SurfaceView でズームインズームアウト機能を実装できない場合、推奨される解決策はありますか? ありがとう。
java - 高さをカスタム ViewGroup に設定する
Linearlayout
いくつかのビューを組み合わせる習慣があります。Linearlayout
高さはこれでお願いしたいですwrap_content
。このようにcustrucorにレイアウトパラメータを追加してみました
しかし、それは効果がありません。高さはまだmatch_parent
です。onMeasure
私もこのように子供の身長に基づいて身長を計算しようとしました
また、効果もありません。では、どこに問題があるのでしょうか。
android - Android: プログラムでカスタム ビューに match_parent を設定する
ペイントできるカスタム ビューを実装しました。画面の向きに関係なく画面いっぱいに表示されるように、MATCH_PARENT に設定したいと思います。向きを横向きに変更すると、幅の 50% しか表示されません。
onMeasure() を変更しましたが、効果はありませんでした:
android - on間違った寸法を測定する
ExpandableListView のカスタム ビューをいくつか作成しました。ここで、スクロールビュー内に展開可能なリスト ビューを配置する必要があります。
ExpandableListView には独自のスクロール機能があり、必要なサイズよりも小さいウィンドウを取得しています (折りたたまれた ExpandableListView のサイズ)。そこで、onMeasure
メソッドを使用して拡張リストの場所を設定することにしました。そして今、すべてが正常に動作していますが、大きなデバイスの ExpandableListView と小さなデバイスの 1 つのリストが別のリストにある間にスペースがあります。
ここで質問です。なぜ寸法が間違っているのですか?
android - onMeasure() のカスタム レイアウトでは、textview はその layout_height を処理する必要がありますか?
TextView やその他のウィジェットを含むカスタム レイアウトがあります。TextView には XML 属性 android:layout_height="" があります。
問題は、layout_height が無視され、wrap_content として扱われることです。
子ビューは独自の layout_width & layout_height パラメータを処理することになっていると思いました。カスタム レイアウトの onMeasure() で何かをする必要がありますか、それとも別の場所に問題がありますか?
ありがとう。