AndroidのViewGroup.LayoutParamsとViewGroupクラスの関係について

このQ&Aのポイント
  • AndroidでのViewGroup.LayoutParamsクラスとViewGroupクラスの関係について教えてください。
  • ViewGroup.LayoutParamsクラスとViewGroupクラスは、継承の関係にあります。
  • 「ViewGroup.LayoutParamsクラス」は、確かに「ViewGroupクラス」でも利用できますが、この書き方には特別な意味はありません。
回答を見る
  • ベストアンサー

ViewGroup.LayoutParamsクラス

Androidで「ViewGroup.LayoutParamsクラス」と「ViewGroupクラス」の関係について教えてください ・継承については、下記のような関係になっていると思うのですが、この時、「ViewGroup.LayoutParamsクラス」と「ViewGroupクラス」はどこで繋がっているのでしょうか? ViewGroup.LayoutParams < Object ・ViewGroup.LayoutParams extends Object ViewGroup < View < Object ・ViewGroup extends View ・View extends Object ・「ViewGroup.LayoutParamsクラス」は、確か「ViewGroupクラス」でも利用できたかと思うのですが ・「ViewGroup.LayoutParams」この書き方自体に何か特別な意味があるのでしょうか?

  • re97
  • お礼率80% (601/744)
  • Java
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • hirotn
  • ベストアンサー率59% (147/246)
回答No.2

http://grepcode.com/snapshot/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/ から、 android-4.2.2_r1-sources.jar をダウンロードして、grep 対象はandroid.*以下 >・「A.B」というクラス名だけど、「ネストではない普通のクラス」はあり得る? 命名規則上混乱してしまいます。と言いたいところですが、いくつか検索してみます。 LayoutParamsクラス15クラスに関して言えばありません。 他にもA.Bとなっているクラスはあると思います。いくつか見てみます。一つ一つソースを読んでいるわけではもちろんなく、ソースに検索を掛けているだけなので、厳密に言えるわけではありませんが、参考までになります。 xxx.Engine 2クラス 全てネスト xxx.Sessionクラス 2クラス 全てネスト xxx.Callbackクラス 4クラス 全てネスト xxx.Event 2クラス 全てネスト リスナを定義するインタフェース(interface XxxxxListener) 約150 ネストでないインタフェースが11個ありますが、名前の重複はありません。 個別に検索する必要があるのでいくつか検索してみましたが、検索した範囲では、ネストでない定義かつ、名前の重複はありませんでした。 >「Hoge」クラスではない他のクラスの「ネストクラス」である可能性はあるでしょうか? ざっくり言うと、Foo.LayoutParamsクラス、Bar.LayourParamsクラス両方定義される場合があります。この場合、FooクラスのインスタンスからBar.LayoutParamsは利用してはなりません。 しっかり言うと、クラスドキュメントを確認して、クラスの親子関係をしっかり確認する必要があります。

re97
質問者

お礼

回答ありがとうございました。 調べていただいたみたいで、恐縮です。 参考になりましたー

その他の回答 (1)

  • hirotn
  • ベストアンサー率59% (147/246)
回答No.1

このようなドキュメントを参照していただければ、継承関係は分かると思います。 http://developer.android.com/reference/android/view/ViewGroup.html |ViewGroup < View < Object |・ViewGroup extends View |・View extends Object となっています。 >ViewGroup.LayoutParamsクラス LayoutParamクラスが、ViewGroupクラスの中で定義された、静的(static)なクラスであることを示しているためです。 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/view/ViewGroup.java#ViewGroup.LayoutParams ほかでも定義されていて、コンポーネントに適したクラスを使わないといけません、ということを言っているようです。 http://qiita.com/items/ac823eac7ae69072530e 使用例: http://www.javadrive.jp/android/framelayout/index2.html

re97
質問者

補足

回答ありがとうございます。 例えばなのですが、「ViewGroup.LayoutParams」みたいに、クラス同士をドットで繋いでいる場合は、必ず「Nested Classes」と解釈して良いのでしょうか? ・「A.B」というクラス名だけど、「ネストではない普通のクラス」はあり得る? ・また「Hoge.LayoutParams」クラスみたいな名称でも、実は「Hoge」クラスではない他のクラスの「ネストクラス」である可能性はあるでしょうか?

関連するQ&A

  • サブクラス型オブジェクトをスーパークラス方に代入

    ある所で下記のような継承についての記述をみつけました。 ----------------------------------------------------------------------------- 継承の目的は、あるクラスで実装したメソッドなどの機能を利用して、 さらに実装を追加する差分コーディングです。 一つのクラスから複数のサブクラスを作ることも良くあります。 このような時、それらのサブクラス型オブジェクトの参照を代入できる変数として、 スーパークラス型変数を使うことがしばしばあります。 ----------------------------------------------------------------------------- サブクラス型オブジェクトの参照を代入できる変数として、 スーパークラス型変数を使うことがある、と いうのはどういった場合に使うのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Android/OnClickListener

    Android/View.OnClickListenerインターフェイス インターフェイスについて教えてください。 下記ページで、「View.OnClickListenerインターフェイス」をimplementsする必要性が理解できません。 ▽Androidアプリにおけるユーザインタフェースの基本処理(3/4):CodeZine   http://codezine.jp/article/detail/6026?p=3 最終的に、ViewクラスonClickメソッドを呼び出すのであれば、 Viewクラスを継承すれば良いと思うのですが、 どうして、「View.OnClickListenerインターフェイス」をimplementsするのでしょうか? ボタンのオブジェクトにリスナーを登録する際、 「リスナーイベントに応じて呼び出されるメソッド」は少ないほうが良い、から? それとも、ViewクラスsetOnClickListenerメソッドの引数に書いている内容に関係しているのでしょうか? ▽View | Android Developers http://developer.android.com/reference/android/view/View.html#setOnClickListener(android.view.View.OnClickListener) >public void setOnClickListener (View.OnClickListener l) この引数(View.OnClickListener l)の意味を教えてください。 View.OnClickListener型しか受け付けない? l って何ですか?

    • ベストアンサー
    • Java
  • クラス継承 メンバ引継ぎとprivateについて

    「クラス継承時のメンバ引継ぎの意味」と、 「privateでオーバーライドさせた際の挙動」ついて教えてください。 class Pa{  private $level="10";  public function getLevel(){   return $this->level;  } } class Ch extends Pa{  protected $level="5"; } $ch = new Ch(); echo $ch->getLevel(); このとき、$ch->getLevel();は、 Paクラスのメソッドをchオブジェクトで見に行ってるのでしょうか? それとも、Chクラスに引き継がれたメソッドを見に行っているのでしょうか? また、このときの「$this」「$this->level」は、それぞれ何を意味しているのでしょうか? また、このときの、Chクラスの「$level」は、どういう状態(扱い)になっているのでしょうか? エラーにならないのですが、再定義扱いされないのでしょうか? 新定義扱いされてるってことでしょうか? 「privateメンバを継承した際」、どういう動きをするのか(ルールになっているのか)教えてください。

    • ベストアンサー
    • PHP
  • オブジェクトの解放をするには?(JBuilder8)

    パネルを継承したクラスを作り、それを使ってオブジェクトを作りました。下記のように・・・ *** public class newPanel extends Panel{ *** newPanel pnl = new newPanel(); *** でこの"pnl"をあるタイミングで解放して取り直したいのですが解放には"pnl"に"null"をいれれば良いのでしょうか?

    • ベストアンサー
    • Java
  • static変数を持ったクラスを継承した複数のクラスで、独立してその変

    static変数を持ったクラスを継承した複数のクラスで、独立してその変数を使いたい。 例えば、 class AbstractStatic{ public static String str; } class Ex1 extends AbstractStatic{} class Ex2 extends AbstractStatic{} というクラスがあったとして、 Ex1 e1 = new Ex1(); ex1.str = "hoge"; といれると、 ex2.str で、hogeが入ってしまいます。同じようなstatic変数を持つクラスを複数作りたいのですが、継承させると、独立して変数を持たせられません。 同じようなクラスに直接static変数を、記述するしかないのでしょうか?

    • ベストアンサー
    • Java
  • new クラス名(Activity名.this);

    Android ・下記のようなコードがあるのですが、このとき「.this」の意味を教えてください ・Activityクラス自身? ・「.」で繋いでいる意味も、「this」の意味も良く分かりません ・thisだけでは駄目? ・引数は1つ? public class Hoge extends Activity {  public class C1 {//インナークラス?   protected m1method(略) {   略 = new クラス名(Hoge.this);

    • ベストアンサー
    • Java
  • PHPのクラス継承において質問

    class SuperClass{ public function getSuperClassName (){ //操作中のオブジェクトのクラス名を取得する print get_class($this); print "<br />"; print __CLASS__; } } class SubClass extends SuperClass{ public function getSubClassName (){ //操作中のオブジェクトのクラス名を取得する print get_class($this); print "<br />"; print __CLASS__; } $obj = new SubClass(); print "<br />"; $obj -> getSuperClassName(); print "<br />"; $obj -> getSubClassName(); 上記のようなコードがあった場合、 出力結果は SubClass SuperClass //継承しているにもかかわらず、SuperClassという文字列が返る。 SubClass SubClass と上記のようになります この結果に一点疑問があるのですが、親クラスのメソッドは子クラスに継承されるんですよね? であれば親クラスの public function getSuperClassName (){ //操作中のオブジェクトのクラス名を取得する print get_class($this); print "<br />"; print __CLASS__; } の箇所の print __CLASS__; の記述箇所はSubClassとでなければいけないような気がします。 しかし結果はSuperClassとでますが、このメソッドは子クラスに継承されていないのですか? publicなら継承されるとマニュアルにかいてありましたが、どうなっているのでしょうか よろしくご教授御願い致します。

    • ベストアンサー
    • PHP
  • 継承(extends)について

    extendsについてわからないことがあります。 次の3つのクラスがあった時、 class スーパークラス { ... class サブクラス1 extends スーパークラス { ... class サブクラス2 extends サブクラス1 {... サブクラス2は、サブクラス1でスーパークラスから継承しているフィールドをメソッドを継承するのでしょうか?

    • ベストアンサー
    • Java
  • 自分で作ったクラスを継承するとエラーが出ます。

    サーブレットを勉強しているのですが、自分で作成したクラスを継承した サーブレットを作成してコンパイルするとその継承したクラスの シンボルを解釈できませんというエラーが出ます。 たとえばclass01というクラスを継承したclass02.javaをコンパイルすると シンボルを解釈できません public class02 extends class01{ といったエラーが出てしまいます。 どうも自分で作ったクラスを読み込めていないようなのですが どうしたらよいのでしょうか? 初歩的な質問かもしれませんが、よろしくお願いします。 ちなみにOSはWin2000、サーブレットはJRUNを使用しています。

    • ベストアンサー
    • Java
  • クラスの生成と継承という概念が分かりません。

    VBでオブジェクト指向というのは何となく分かるのですが、 クラスの生成と継承という概念が分かりません。 クラスというのは何のことなのでしょうか? どなたか優しく教えて下さい。 お願い致します。