2

抽象クラス ViewGroup を拡張して、カスタム レイアウト Android コンポーネントを作成しています (Parleys.com の Romain Guy によるビデオ チュートリアル: http://www.parleys.com/#st=5&id=2191&sl=1に従って)。

私のコンポーネントには子が含まれている必要がありますが、ViewGroup タイプ (別の LinearLayout や RelativeLayout など) の 1 つの子のみに制限したいと考えています。ScrollView のようなものです。その制限を追加する方法はありますか?

編集: Android 開発者が言った最終的な解決策は、ViewGroup サブクラスの制約 onFinishInflate をプログラムでチェックすることです。

@Override
public void onFinishInflate()
{
    if (getChildCount() > 1)
        throw new IllegalArgumentException("Only 1 child allowed");

    if (getChildCount() == 0 || !(getChildAt(0) instanceof ViewGroup))
        throw new IllegalArgumentException("Child must be a ViewGroup");
}
4

2 に答える 2

3

できますよ 。

を使用して子の数を取得し、子getChildCount()が 1 つだけであることを確認します。

次に、を使用して、viewGroup にある唯一の子を取得しgetChildAt(0)ます。

この後、結果にリフレクションを使用し、そのクラスで実行したい追加のチェックを実行します(たとえば、getSuperclass()

于 2012-08-11T20:43:13.223 に答える