を検出する方法:アンドロイド - 私は次のコードを使用していた親のレイアウトタイプ
String[] UIItems = new String[5];
UIItems[0] = "game_area_holder";
UIItems[1] = "topListBtn";
UIItems[2] = "bigBtn";
UIItems[3] = "reposBtn";
UIItems[4] = "sectorStateColorLine";
for (int number = 0; number < UIItems.length; number++) {
itemID = getResources().getIdentifier(UIItems[number],"id",getPackageName());
ImageView aktUIItem = (ImageView) findViewById(itemID);
FrameLayout.LayoutParams aktUIItemParams = (FrameLayout.LayoutParams)aktUIItem.getLayoutParams();
.
. doing things here with aktUIItemParams
.
}
これは正常に動作しますが、私は別のレイアウトにイメージの1つを配置する場合(の直鎖、Relative-など)その後、私は、エラーメッセージが表示されます:
とjava.lang.ClassCastException:親ではないのでandroid.widget.RelativeLayout $ LayoutParamsはもちろんandroid.widget.FrameLayout $ LayoutParams
にキャストすることはできません、それはですFrameLayout ...しかし、画像の親のレイアウトタイプをプログラムで確認するにはどうすればよいですか? y?または、どのようにして「標準」LayoutParamsにgetLayoutParams()をキャストできますか?
屋、あなたはレイアウトのparamsは、あなたが消費することができるタイプのものであるかどうかを確認するためにinstanceof
チェックにする必要がありますため
"または、どのように"標準の "LayoutParamsにgetLayoutParams()をキャストできますか?" ['ViewGroup.LayoutParams'](https://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html)? – PPartisan
これは大丈夫ですが、ViewGroup.LayoutParamsを使用すると、aktUIItemParams.leftMarginは利用できません。:( (申し訳ありません、私は以前に書いていませんでした...私はgetIntrinsicWidth()にアクセスする必要があります... Height()およびitem leftMarginおよびtopMarginプロパティ) – Zoltan
私はあなたがすでに受け入れられた回答を持っていることを理解していますが、['ViewGroup.MarginLayoutParams'](https://developer.android.com/reference/android/view /ViewGroup.MarginLayoutParams.html)には、必要なすべてのメソッド/フィールドが含まれています。もしそうであれば、キャストを避けることができます。 – PPartisan