質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

2回答

10413閲覧

動的に作った ImageViewを位置指定する

tukusa

総合スコア44

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2015/11/26 14:16

自分なりに調べてみたのですがうまくいかず…。
動的に作ったImageViewを位置指定させて出力したいのですが、位置の設定する方法はありますでしょうか

protected void display(){ //画面サイズの取得 Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); sizeX = size.x; sizeY = size.y; //出力させたい位置の決定 float pojiX = (totalTime / StartTime) * sizeX; float pojiY = sizeY / 2; //サイズ指定 imageView.setX(sizeX/10); imageView.setY(sizeY/10); ////////////////// // ここで pojiX , pojiY の位置にImageViewを設定したい ///////////////// setContentView(ib[0]); }

一応、RelativeLayout を使って relativeLayout(imageView , (int)pojiX , (int)pojiY) という形も試したのですが、
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
という形でエラーとなってしまいます。
エラーについてもそれなりに調べてみたのですが答えが見つからず…。
賢者様、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

結局いい方法が見つからず…。
あきらめて、Textviewでやってみました。

やりたいことは、こんな感じで動きました。

float pojiX = (1.0f - ((float)totalTime / StartTime)) * sizeX;
float pojiY = sizeY / 2;

ib[0] = new TextView(this); ib[0].setBackground(res.getDrawable(R.drawable.ame1)); ib[0].setX(pojiX); ib[0].setY(pojiY); int sizeXX = (int)sizeX / 10; int sizeYY = (int)sizeY / 10; screen.removeAllViews(); screen.addView(ib[0] , sizeXX , sizeYY);

因みにこれCountDownTimerを継承したクラスからMainActivityにあるメソッド定期的に動かして、
画像が動くというのを試したものです。※カウント終わったら再セットしてエンドレス仕様

ImageViewとしての解決はしていませんが、こんなのでももし誰かのお役に立てば…!

投稿2015/11/26 15:18

tukusa

総合スコア44

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エラーの意味は「親は一人しか持て無いんだよ、親を変えるなら一度removeViewを呼んで絶縁してね」です。
なので、下記のようにしてみてください。
・イメージビューのremove
・位置を設定
・イメージビューのadd

投稿2015/11/26 14:28

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tukusa

2015/11/26 14:48

ありがとうございます エラーが消えました! しかしImageViewもどこかに… むずかしいですね><
yona

2015/11/26 14:54

疑問点 ・setContentViewは一つのViewGroupで全てを上書きします。 ・ib[0]が何者かわかりません。 ・移動したい座標はpojiXとpojiYなのにsizeXとsizeYを設定している
tukusa

2015/11/26 15:32

setContentView()理解しました>< 大外のLayoutを出すときに使うのですね。 ib[0]はイメージビューでした。 setX setYで座標指定だったようですね…サイズ変更のと勘違いしていました…。 本当に、お付き合いありがとうございました! すみません寝ます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問