問題タブ [viewgroup]
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 - Android: カスタム ビューグループのカスタム ビューで onTouchEvent を使用する
「NodeGrid」と呼ばれるカスタム ViewGroup の子である「Node」と呼ぶカスタム ビューがあります。「NodeGrid」クラスは、より具体的には RelativeLayout を拡張します。
カスタム ビュー クラス (「ノード」) に次のコード スニペットがあります。
問題:
このコードでブレークポイントを設定した後、onTouchEventはMotionEvent.ACTION_DOWNの場合にのみ呼び出され、他の 2 つのケース (「アクション アップ」または「アクション ムーブ」) では呼び出されないようです。これを引き起こしている可能性のある何かを知っている人はいますか?
また(関連する可能性があります):
ビューが ViewGroup にどのように追加されるかは重要ですか? 「addView」に加えて、「addFocusables」や「addTouchables」など、ViewGroup に子を追加するためのメソッドが他にもあることに気付きました。現在、「addView」を使用して子ビューを ViewGroup に追加しているだけです。
android - RelativeLayout:ビューを兄弟ビューグループの子に揃えます
私は、RelativeLayoutとRadioGroup内のアクティブなRadioButtonを示すためにスライドするインジケーターを持つRadioGroupを使用して、Androidでタブバーを作成しようとしています。
これらはカスタマイズされたラジオボタンであり、テキストの上にアイコンが付いた長方形で、すべてのコンテンツが中央に配置され、背景にカスタムの状態セレクターが使用されます。
これが私の現在の階層です:
私が持っていたアイデアは、ラジオボタンがクリックされたときに、インジケーターを選択したラジオボタンの上下に揃える(そしてアニメーション化する)というものでした。ただし、layout_align<Edge>
兄弟要素でのみ機能し、別のビューグループのメンバーでは機能しないようです。つまり、RadioGroup自体には整列できますが、その中のRadioButtonには整列できません。
インジケーターをRadioGroupのメンバーとして配置することを考えましたが、RadioGroupはLinearLayoutの拡張であるため、特定のRadioButtonのエッジにインジケーターを配置する方法はないようです。
誰かが私がこの問題を解決する方法を考えることができますか?それとも、ボタンに揃えるアニメーションのテクニックよりも優れた解決策があるでしょうか?
更新 @superjosの助けを借りて、私はこれをかなりうまく解決することができました。
使用する代わりに、各ボタンに既知の高さを指定wrap_content
する必要がありました(理想的ではありませんが、このプロジェクトではおそらく正常に機能するはずです)。インジケーターの高さをボタンの高さと一致させます。RadioGroupがコンテンツをラップし、親ビューの垂直方向の中央に配置されるように設定されていることを確認してください。インジケーターをalignTop
とtoRightOf
RadioGroupに設定します。次に、ボタンクリックリスナーの場合:
android - 方向変更時のビューの再描画
私は を使用してTextView
おり、ViewGroup
それを使用してViewGroup
スクロール可能な UI のようなギャラリーを作成しています。のTextView
背景全体が単色で塗りつぶされています。orientation
からportrait
に、またはその逆に変更landscape
すると、元のサイズが維持されるため、図面が混乱しているように見えることを除いて、すべて正常に機能しています。しかし、パンまたはスクロールするとすぐに再修正されます。拡張する私のクラスは描画部分を処理せず、次のことを試しました:portrait
TextView's
ViewGroup
- を無効にしてい
ViewGroup
ます。 - 表示中の現在のビューを無効にします。
- 実装
onConfigurationChanged
中 (マニフェストに適切な変更を加えて)。
TextView
構成が変更されたときに currentState を保存した後に を再作成するプロセスを実行したくありません。ビューを追加する私のコードスニペットは次のViewGroup
とおりです:-
android - Android:MotionEventを使用して、カスタムViewGroup内のビューのドラッグアンドドロップによる配置を行う
特にドラッグアンドドロップの状況で、作成したカスタムViewGroupにビュー要素を配置するのに問題があります。Android 2.2以降をターゲットにしているため、Android3で登場したドラッグアンドドロップAPIを実際に使用することはできません。
私のカスタムViewGroupは「NodeGrid」と呼ばれ、「RelativeLayout」を拡張します。そのonLayoutメソッドは、次のようにオーバーライドされます。
「NodeGrid」の子は「NodeView」タイプです(上記のコードで確認できます)。NodeViewは、私が作成したカスタムViewクラスです。これには、NodeGrid上のNodeViewインスタンスに関する位置情報を持ついくつかのゲッター/セッターを含むビューモデルクラスである「DataContext」と呼ばれるメンバーが含まれています。
私の「NodeView」クラスは、ユーザーによるタッチイベントをキャプチャするため、ユーザーはグリッド上の任意の場所にノードをドラッグアンドドロップするだけで済みます。イベントハンドラは次のようになります。
私の問題は、ドラッグされているビューが「NodeGrid」で期待するように配置されていないことです。ドラッグするとx軸の位置は正しいように見えますが、y軸の位置は常に一定量のピクセルによってオフセットされています。これを引き起こしているのは何ですか?getRawX()およびgetRawY()ではなくgetX()およびgetY()メソッドを使用しようとしましたが、それが原因で悪化するだけです。
getRawX()とgetRawY()がpx単位を返すのか、dip単位を返すのかわからなかったので、px単位が返されることを期待して、新しいx値とy値をに割り当てる前にそれらをdip単位に変換してみました。ノードですが、それはオフセットを減少させるだけで、それを排除しませんでした。
タッチしている場所とノードが配置されている場所の違いの原因は何ですか?
android - androidのViewGroupのaddViewInLayout()の挙動
の を呼び出すメソッドをViewGroup
使用しているカスタムを作成していますが、水平方向にのみ追加しています。onLayout
addViewInLayout()
ViewGroup
View
Androidで行っているView
ように、強制的に垂直に追加する方法ListView
助けを求めています。
android - Android: カスタム ViewGroup で FEATURE_NO_TITLE を使用すると、ウィンドウの上にスペースが残ります
カスタム ViewGroup を作成しようとしていますが、それをフルスクリーン アプリケーションで使用したいと考えています。「requestWindowFeature(Window.FEATURE_NO_TITLE)」を使用してタイトル バーを非表示にしています。タイトル バーは表示されていませんが、ウィンドウ上部のスペースを消費しています。
上の画像は、次のコードで生成されました。
このカスタム レイアウト用のスペースが Android に与えられているのは興味深いことです。アクティビティのルート レイアウトとして CustomLayout を設定しています。「onLayout」のログでは「t = 25」を受信しており、それが私のレイアウトを押し下げています。私が知らないのは、Androidを「t = 25」(正確にタイトルバーの高さ)にする間違ったことです。
このコードは Android SDK 2.1 で実行していますが、Android 2.2 でも実行しています。
編集:いくつかのデフォルト レイアウト (LinearLayout など) の CustomLayout クラスを変更すると、スペースが消えます。もちろん、Android SDK のデフォルト レイアウトでは、作成しようとしているレイアウトが作成されないため、作成しています。
私が作成しているレイアウトはやや複雑ですが、これはレイアウトで発生した問題を再現するために作成できる最小のコードです。
android - ViewGroupをViewGroupに追加する
プログラムでビューグループを別のビューグループに追加できるようにしたいと思います。両方とも、私のonCreateメソッドとともに、次のようにxmlで定義されています。
main.xml:
secondlayout.xml:
onCreate:
android - MapOverlayTappingで新しいアクティビティを開始します
私はAndroidを初めて使用します。5つのタブを持つ1つのタブ付きアプリを構築しています。異なるViewGroupを使用し、各タブには必要に応じて対応するViewGroupがあり、子アクティビティがあります。最初のタブは、異なる子アクティビティを持つTabGroupHomeです。TabGroupHomeは最初にGoogleMapActivityを起動します。 (overlayItemsを持つ)子アクティビティとして。これらのオーバーレイは、さまざまなユーザーを表しています。これらのユーザーのデータは、異なるユーザーのデータを持つサーバー上の1つのphpファイルによって返される1つのJSONArrayから取得します。アプリを起動すると、その外観->
上部に1つのアクションバーがあり、さまざまなボタン(リスト、プロファイル、更新など)があります。[リスト]をクリックすると、すべてのユーザーの1つのリストが表示されます->
&listItemをクリックすると、上記の応答ユーザーの完全なプロファイルが表示されます
私が立ち往生したところは->??? MapPinをタップしたときにこのユーザーのプロファイルを表示したい...
これを行うための私のコードは->
私のHelloItemizedOverlayクラスは->
「onTap」のFanProfileは、ユーザーのリストのlistItemをクリックしたときに呼び出すアクティビティと同じです。
上記のコードは機能しますが、タブビューを開始してタブを非表示にします...
[これ] http://i.stack.imgur.com/lgT2G.png
間違いを犯したり、間違ったりしているところがわかりません。
あなたの提案は私にとって貴重です!!!
この問題の解決策を得る場所へのポインタまたはサンプルコードをいただければ幸いです...
android - AndroidViewとViewGroup
Androidでは。ViewGroup
から継承しView
ます。AViewGroup
はを保持するコンテナViews
です。
Androidの人々がこの関係Inheritance
を構成ではなく定義したのはなぜですか。ViewGroup
含まれているので、Views
それは構成であるべきではありませんか?
android - カスタム ViewGroup 内のビューが表示されない
最近、カスタム ViewGroup の作成に取り掛かりましたが、理解できない問題に遭遇しました。
ViewManager と Article の 2 つの ViewGroups があります。
ViewManager は、前の記事の下に単純に記事をレイアウトします (つまり、垂直の LinearLayout のように)。
記事では、画像でわかるように、いくつかの TextView と ImageView を配置しています。単一の記事を作成して ViewManager に追加すると正常に動作し、すべてが表示されますが、2 番目の記事を追加すると記事のコンテンツが表示されません。
では、TextView や ImageView が表示されないのはなぜですか (青色のバーは onDraw() の canvas.drawRect() で描画されることに注意してください)。また、(logcat を介して) 子ビューのバインドされた値 (getLeft()/Top()/Right()/Bottom() in drawChild()) を出力しましたが、それらはすべて問題ないように見えます
それで、誰かが私が間違ったことを知っていますか?
Article onMeasure メソッド
および onLayout メソッド
余談ですが、このように LayoutParams.WRAP_CONTENT を makeMeasureSpec() のパラメーターとして使用しても問題ありませんか?