問題タブ [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.

0 投票する
1 に答える
7994 参照

android - xmlからカスタムビューを作成する

同じように水平方向にスクロール可能なボタンの列を追加したいと思います。

(toolbar.xml)私のアプリケーションのすべてのアクティビティの下部に。すべてのアクティビティで各ボタンのクリックリスナーを指定する必要はなく、すべてを1つの場所で実行して、毎回コントロールをインポートできるようにしたいと思います。私は私が次のようなことをすることができると思います

画面にボタンバーを含めて、次のようなことを行います

しかし、それでは何ですか?実際に表示するにはどうすればよいですか?オーバーライドする必要がある他の方法はありますか?これを行うためのより良い/より適切な方法はありますか?

0 投票する
2 に答える
6605 参照

android - Android:attributeset コンストラクターを使用してカスタム ビューをインスタンス化する方法

私のカスタム ビューには動的なカスタム属性があります。コンストラクタ CalendarView(Context context, AttributeSet attrs) を使用していくつかの属性を渡したくありません。Xml.asAttributeSet を使用して属性セットをインスタンス化しようとしましたが、機能しません。誰も私に方法を教えてもらえますか。

注: カスタム ビューには動的な属性があるため、xml レイアウトを介してカスタム ビューをインスタンス化したくありません。私の解決策は間違っていますか?

カスタムビューは次のとおりです。

ここに活動があります:

0 投票する
2 に答える
8600 参照

android - サイズ変更後にカスタム ViewGroup 内のビューがレンダリングされない

私は困惑している問題に遭遇しており、誰かが私にいくつかの指針を与えてくれることを望んでいました.

カスタム ViewGroup (実際には RelativeLayout を含む FrameLayout) を使用してイベント カレンダーをレンダリングするアプリケーションに取り組んでいます。カレンダー内のイベントは、イベントの期間とそれを含むビューのサイズに応じたサイズのビューとして表されます。

含まれている FrameLayout のサイズが変更されたときに発生する問題が発生しています。現在の実装では、イベントを表すすべてのビューを削除し、新しいビューを追加して、FrameLayout の現在のサイズに基づいてサイズを計算しようとします。この作業は、FrameLayout でオーバーライドされる View の onSizeChanged() メソッドを介してトリガーされます。

ビューのサイズが変更されると、このコードが実行され、ビューが更新されますが、実際には画面にレンダリングされるものはありません... FrameLayout に含まれるビューは単に表示されません。Hierarchyviewer ツールでビューを読み込むと、それらはビュー ツリーの一部であり、概観の本来あるべき位置に概説されますが、表示されません。(ビューは FrameLayout の最初のレンダリングで表示されることに注意してください...ビューが消えるのは、サイズ変更後にのみです。)

サイズ変更中のイベントの順序は次のようになります。

ビュー(onSizeChanged()内)をリセットした後にrequestLayout()を呼び出しても効果がないようです。ただし、requestLayout() を呼び出す前に遅延を発生させると、ビューが表示されます。スレッドを生成してスリープ状態にするか、単純に requestLayout() を呼び出すダミー ボタンを作成し、サイズ変更後にそれを押すか、または onSizeChanged() の最後に配置されたこの醜いハックでさえ、この遅延を引き起こすことができます。

このハックを使用すると、含まれているビューが表示され、イベントの順序は次のようになります。

そのため、(ビュー ツリーが変更された後に) 2 回目の測定パスを強制すると、含まれているビューが本来あるべき姿で表示されるようになります。なぜ requestLayout() の呼び出しを遅らせると、これが起こるのかは謎です。

誰かが私が間違っていることについての指針を提供できますか?

一部のコードを見ずにこれを理解するのはやや難しいことを認識しているため、私の問題を示す小さなサンプル アプリケーションを作成し、Github で利用できるようにしました。

https://github.com/MichaelSims/ViewGroupResizeTest

上記のハックは、別のブランチにコミットされています。

https://github.com/MichaelSims/ViewGroupResizeTest/tree/post-runnable-hack

追加情報を提供できる場合は、お知らせください。事前に感謝します。

0 投票する
1 に答える
6744 参照

android - Android: カスタム ビューのサイズ変更。親はサイズ変更されますが、幅/高さの変更は子ビューに渡されません

私は現在、アンドロイドを使用して古い学校の戦艦ボードゲームに基づいたゲームを作ろうとしています。現時点では、ゲームの作成に必要なコンポーネントの感触を掴もうとしているところです。

基本的に、現時点でレイアウト xml ファイルにあるものは次のとおりです。

BoardView が画面の特定の部分のみを占めるようにしたい。つまり、ビューは、このビューで作成したいコンテンツのサイズである必要があります。この場合は 2D ボードです。これは、View の拡張から onMeasure() メソッドをオーバーライドすることによって行われます。ビューの幅は同じに保たれますが、高さには幅と同じ値が与えられ、完全な正方形が得られます。

ビューの onSizeChanged() 関数をオーバーライドして値を確認することで、ビューのサイズが変更されたかどうかを確認します。

レイアウト ファイルからわかるように、ShipView という別のカスタム ビューを子として保持する RelativeLayout ビュー グループがあります。そして、理想的には、その寸法を測定するときに、その寸法が onMeasure で設定されたものに限定されていることを望んでいます。同様の方法で onMeasure() メソッドを介して ShipView の寸法を確認します。

ログ ファイルには次のように表示されます (onMeasure() メソッドは複数回呼び出されているようですが、すべての値が同じであるため、値がすべて同じであるため、複数のログを表示する必要はありません)。

ShipViews onMeasure() を介して寸法を取得すると、何も変更されておらず、設定した寸法制限が無視されているようです。ShipView の RelativeLayout と関係があるかどうかはわかりません。LayoutParams が変更されたので、そのために LayoutParams を設定する必要がありますか? 親のビューの次元を変更すると、子に引き継がれると思いました。

これがこの種のゲームでこれを行う正しい方法であるかどうかは、議論の余地がありますが、いずれにしても、それがどのように行われるかを知りたいです (私はそれができると思います..?)。どんな助けでも大歓迎です。

0 投票する
1 に答える
999 参照

android - ビットマップを表示するカスタム ビューにボタンを追加する方法

ビットマップを描画するカスタム ビューを持つアプリがあります。ビューのビットマップの上にボタンを配置したいと思います。アクティビティの setContentView がカスタム ビュー クラスに設定されているため、main.xml からボタンを膨らませることができません。どうすればこれを回避できますか? ビュー クラスでプログラムによってボタンを作成し、リスナーをアタッチすることは可能ですか?

public class Jjilapp extends Activity {

}

0 投票する
1 に答える
2396 参照

android - xmlで宣言したときにカスタムビューが機能しない

アクティビティにビューを拡張する内部クラスがあるアプリがあります。ビュークラスはビットマップを表示し、すべて正常に機能します。私が今やろうとしているのは、ビットマップを表示するボタンをビューに配置することです。これを行うために、元の内部クラスTouchViewを別のクラスにしました。次に、相対レイアウト内のボタンの下にあるレイアウトフォルダーのxmlファイルで宣言しました。これは、ビューの上に浮かんでいるボタンの外観を与えると思いました。次のエラーが発生します。誰かが理由を知っていますか?ありがとう

コード:

ここにコードを入力してください

レイアウト:

0 投票する
4 に答える
7147 参照

android - チェックボックスの膨張エラー

Android マーケットのアプリケーションから奇妙なスタック トレースが発生しています。2 つのビューを含むビュー スイッチャーがあり、そのうちの 1 つにはチェックボックスが含まれています。

カスタム ビューであるこのスタック トレース AdDetailView を取得しています。

これは、次のビュー コンストラクターで発生します。

行 67 は膨張行です。

問題は、エミュレータまたはデバイスで問題を再現できないことです。ポインタはありますか?

ここに ad_detail_view.xml があります

style.xml :

bk_star_button.xml:

一部のデバイスでまったく同じ例外が発生した別のレイアウトを次に示します。

例外を発生させるコード:

topbar_toggle_button.xml :

0 投票する
1 に答える
1168 参照

android - 実行時に作成された複合Androidコンポーネント

挨拶します。私はプロジェクトに取り組んでおり、複合コンポーネントをロールアップすると思いました。それらをxmlでレイアウトし、LinearLayoutを拡張する新しいクラスを作成しました。基本的に、アクティビティにはそのうちの5つか6つが必要です。実行前に必要な数がわからないため、これらをアクティビティ内にプログラムで作成したいと思います。また、以下に含めていないxmlファイルを作成して設定しました。私はこれを行うために私が見つけたそれぞれの方法に問題を抱えています。

これが、LinearLayoutを拡張する私が作成したクラス内のメソッドセグメントです。

そして、アクティビティの中で、これらは私が探しているものに最も近いように見える2つの解決策です。

このメソッドを使用して属性を取得する場所がわからない:

インフレータがこのメソッドでExtendedLinearLayoutを使用するように指定する方法がわかりません。

私はおそらくListViewの使用に落ち着くでしょうが、5〜6個のアイテムには少しやり過ぎのようです。また、以前にFlexを使用したことがあるので、これは少なくとも問題の合理的な解決策のようです

ありがとう、ランドール

- - - - - - - - アップデート - - - - - - - - - -

以下に説明する方法を試しました。すべてを設定すると、InflationException:Binary XML file line#8:Errorinflatingclassが発生します。xmlは問題ないように見えます私が混乱するかもしれない一つのことは、インフレータをどこと呼ぶかです。現在、カスタムクラスのonFinishInflate()とActivityで次のようにインフレータを呼び出しています。

そして、活動では:

ありがとう、そしてあなたが見てみる時間があることを願っています。私はオンラインで調べて物事を理解するのが好きですが、これは昨日の朝から何時間も料理をしてくれました。これをListAdapterにリファクタリングするだけで約2インチ離れています。

- - - - - - - - アップデート - - - - - - - - - -

これがxmlファイルです

0 投票する
1 に答える
4243 参照

android - ExpandableListViewグループアイテムにボタンを追加する

ExapndableListViewをカスタマイズしています、、グループアイテムにボタンを追加しようとしています、、

問題は、ボタンがフォーカス可能である場合、グループがクリックしても展開されないことです。グループを正常に展開し、ボタンを正常にクリックしたい。

誰かが私がそれを達成する方法を知っていますか?

0 投票する
3 に答える
975 参照

android - カスタムビューグループの9つのパッチ

9パッチとカスタムビューグループを作成し、そのビューグループの背景を9パッチにしました。

問題は次のとおりです。9つのパッチが「コンテンツ領域」の設定を無視しています。

だから:カスタムビューで9つのパッチを適切に使用するにはどうすればよいですか?

また:

OnMeasureおよびOnLayoutの計算で使用できるように、9つのパッチからコンテンツ領域を取得するにはどうすればよいですか?