問題タブ [custom-view]
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 - RelativeLayout の拡張
これは、カスタマイズ可能なオーバースクロールを使用して ListView を作成する作業です。
RelativeLayout を拡張するカスタム要素を作成したいのですが、子ビューの追加がうまくいきません。コードは正しいように見えますが、ビューは少し狂っているように見えます。
これは、奇妙なことに、これを提供します(エッジとグローを表示するために、相対レイアウトを黒に設定しました):
ご覧のとおり、上端は人里離れたところに浮かんでいて、下のグローは小さなサイズに縮小しています....一体何ですか?
android - HorizontalScrollView 内に埋め込むとカスタム ビューが表示されない
多くの人がこれと同様の問題を抱えていることは知っていますが、解決策が見つかりません。SurfaceView を拡張するカスタム ビューを作成しました。このビューは、次を使用すると完全に機能します。
ただし、HorizontalScrollView 内に埋め込む必要があります。xml でこれを試してみると、次のようになります。
その後、致命的な例外が発生し、アプリケーションが閉じます。
これをプログラムで解決しようとすると、次のようになります。
すると画面が真っ暗。上記のコードで多くのバリエーションも試しましたが、成功したものはありません。どこが間違っていますか?
objective-c - カスタム ビューを数回繰り返す
どうすればこれをやり始めることができるのか、ほとんどわからないので、説明します。別の小さなビューを保持するカスタム ビューがあります。これらの 2 つのビューは完全に IB で構築されており、メインのビューにはいくつかの入力フィールドがあり、サイズ変更のみが行われます (かなり落ち込んでいると思います)。2 つ目は、メインの入力が設定された後に表示されます。明確にするために、最初のビューはいくつかの入力のみを要求し、それらが入力されると、2 番目のビューが表示され、それらの入力値の使用を開始します。私がやりたいことは、最初にいくつかの入力を入れて2番目のビューを表示させ、次に他の入力を入れて別のビュー(最初のものと同じように見える)を表示させることですが、代わりに新しい入力値。
私が知りたいのは、IB で同じカスタム ビューを数回作成する必要があるかどうか、または (どのように行うと思うか) 別のクラスの 2 番目のビューを作成し、新しいオブジェクトごとに新しいオブジェクトを作成する必要があるかどうかです。入力し、別のクラスから、メイン ビューでの配置方法を制御します。それがその方法である場合、プログラムで新しいオブジェクトを作成する方法や、これらのことを行う方法が本当にわからないため、助けが必要です。プログラムは、ビューが完全に分離されており、各コマンド (キャンセルなど) がビューの 1 つだけに適用されることを理解する必要があります。
これは非常に広いことを認識していますが、この特定の問題についてはまったく経験がありません。基本的に、入力を受け取るカスタムビューがあり、入力が送信されるたびにビューを繰り返したいのですが、各ビューは互いに独立しています。
助けてくれてありがとう。
java - カスタム ビューの作成: クラスを拡張し、基本クラスのプライベート メンバー変数にアクセスするにはどうすればよいですか?
演習として、ImageButton
便利だと思われるいくつかの機能を追加するために拡張しようとしています。特に、1つはドロウの影です。私はこれでことわざの壁にぶつかりました。
クラスの拡張BitmapDrawable
が必要だと私には思えます。このクラスにはPaint
、ビットマップを画面に描画するために使用されるオブジェクトが含まれています。Paint
もし私がこのオブジェクトにアクセスできたら...私がしなければならないことは、それのsetShadowLayer()
メソッドを呼び出すことだけですprivate
. public
ペイント オブジェクトを返すメソッドがありgetPaint()
ますが、対応するメソッドがない限り、それを変更しても意味がありませんsetPaint()
。(ありません。)
現在、私の思考プロセスは次のようになります...
- クラス
ShadowBitmapDrawable
を作成するextends BitmapDrawable
- このクラス内で、何らかの方法で
BitmapDrawable
のPaint
オブジェクトをPaint
のsetShadowLayer()
メソッドで変更します。 - 私のカスタム
ImageButton
クラスでは、 を呼び出して、それを私のオブジェクトsetImageDrawable(Drawable d)
に渡します。ShadowBitmapDrawable
ステップ 2 は障害物です。BitmapDrawable
のPaint
オブジェクトを変更するにはどうすればよいですか? この問題のどこにいるのかを示す指標としてのみ、思考プロセスを追加したことに注意してください。私は他の提案を受け入れます。
ここにいくつかの参照があります:
- BitmapDrawable ソース(
Drawable
ビットマップを描画するように拡張) - ImageView ソース(の基本クラス
ImageButton
) - 描画可能なソース
PS 私は、私が得ようとしている答えをすでに知っていて、それが好きではないという気分が悪い. とにかく質問を投稿して、最善を尽くしたいと思いました。
objective-c - iOS - カスタム ビューのクラッシュ
プロジェクトはこのエラーでクラッシュしています。
デリゲートのこのメソッドで
質問は大歓迎ですが、コードを確認したい場合は、問題のあるビュー コントローラー ファイルがここにあります。
android - 高価なビューの高さの計算を処理するためのベスト プラクティスは?
カスタム ビューのサイズ変更とレイアウトの問題が発生し続けており、誰かが「ベスト プラクティス」のアプローチを提案できるかどうか疑問に思っています。問題は次のとおりです。コンテンツに必要な高さがビューの幅に依存するカスタム ビューを想像してみてください (複数行の TextView に似ています)。(明らかに、これは高さがレイアウト パラメーターによって固定されていない場合にのみ適用されます。) 問題は、特定の幅に対して、これらのカスタム ビューでコンテンツの高さを計算するのにかなりのコストがかかることです。特に、UI スレッドで計算するにはコストがかかりすぎるため、ある時点でワーカー スレッドを起動してレイアウトを計算し、完了したら UI を更新する必要があります。
問題は、これをどのように設計するかです。いくつかの戦略を考えました。それらはすべて、高さが計算されるたびに、対応する幅が記録されると想定しています。
最初の戦略は、次のコードに示されています。
レイアウト スレッドが終了すると、Runnable が UI スレッドにポストさmLayoutHeight
れ、計算された高さに設定されてからrequestLayout()
(and invalidate()
) が呼び出されます。
2 番目の戦略は、 (レイアウト スレッドを起動せずに) その時点onMeasure
の値を常に使用することです。mLayoutHeight
幅の変更のテストとレイアウト スレッドの起動は、オーバーライドによって行われますonSizeChanged
。
3 番目の戦略は、遅延して、(必要に応じて) でレイアウト スレッドを起動するのを待つことonDraw
です。
必要な高さをできるだけ早く計算しながら、レイアウト スレッドが起動および/または強制終了される回数を最小限に抑えたいと考えています。への呼び出しの数も最小限に抑えるとよいでしょうrequestLayout()
。
ドキュメントからonMeasure
、単一のレイアウトの過程で複数回呼び出される可能性があることは明らかです。onSizeChanged
数回呼び出される可能性があることはあまり明確ではありませんが (可能性は高いと思われます) 。ですから、ロジックを入れるonDraw
方がより良い戦略かもしれないと考えています。しかし、それはカスタムビューのサイジングの精神に反しているように見えるので、私はそれに対して明らかに不合理な偏見を持っています.
他の人も同じ問題に直面したに違いありません。私が見逃したアプローチはありますか?最善のアプローチはありますか?
android - カスタムビューでキャンバスにAndroidの描画ボタン?
カスタムビューでキャンバスの上にボタンを描画するにはどうすればよいですか?(できれば右側中央)button.draw(canvas)を実行する前に呼び出す必要があるものはありますか?
御時間ありがとうございます
android - Android:カスタムビューが遅すぎますか?
たくさんのpng画像を含むカスタムビューがあります(3文字ごとに画像)。しかし、描画とスクロールには遅すぎます。
これはカスタムビューの私のコードです:
カスタムビューを高速化するにはどうすればよいですか?すべての画像のビットマップを一度作成する必要があると思います。しかし、どのように?
前もって感謝します!
android - Honeycomm でビューステートを保存する
カスタム ビューを使用して画面に描画する非常にシンプルなゲームを開発しました。私の電話 (Android 2.2) では、デバイスのホーム ボタンを押して、他のタスクを実行できます。ゲームに戻ると、以前の正確な状態に復元されます。問題は、この動作が発生するために、メソッドをオーバーライドしたり、実際に何かをしたりする必要がなかったということです。ただし、ハニカムでは、期待どおりにすべてがリセットされます。
非常に不可解です... この点に関して、Honeycomb を 2.2 のように動作させる方法があるかどうか疑問に思っていました。私はビュー ステートの保存にあまり慣れていませんが、たくさんの変数 (カスタム オブジェクトの保存方法によっては数百) があるので、手動で行うのは不快だと思います。