6
私はいくつかの画像の特定の位置に表示する必要があるViewを持っています。私はAbsoluteLayoutを使って既に行っていますが、使用したくないので同じ結果を得ようとしています。 FrameLayoutを使用します。FrameLayoutで絶対位置を変更する
しかし、私はこの作業を取得することはできません、これは私の2回です。
public void showVideo(RectF bounds) {
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) video.getLayoutParams();
params.width = (int) bounds.width();
params.height = (int) bounds.height();
int x = (int) viewer.getPageXOffset();
int y = (int) viewer.getPageYOffset();
video.setPadding((int) (x + bounds.left), (int) (y + bounds.top), (int) (x + bounds.right),
(int) (y + bounds.bottom));
video.setLayoutParams(params);
video.invalidate();
video.setVisibility(View.VISIBLE);
video.setFocusable(true);
video.setFocusableInTouchMode(true);
video.requestFocus();
}
そして:
public void showVideo(RectF bounds, final String videoUrl) {
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) video.getLayoutParams();
params.width = (int) bounds.width();
params.height = (int) bounds.height();
int x = (int) (viewer.getPageXOffset() + bounds.left);
int y = (int) (viewer.getPageYOffset() + bounds.top);
params.leftMargin = x;
params.topMargin = y;
video.setLayoutParams(params);
video.invalidate();
video.setVisibility(View.VISIBLE);
video.setFocusable(true);
video.setFocusableInTouchMode(true);
video.requestFocus();
}
しかし、どちらの場合も、VideoViewがvで表示されます(0,0 )(左上隅)。
レイアウトを動的にコードで作成する必要がありますか?私はFrameLayoutをXMLで扱うときにこの種の問題を経験したことはありません – Egor
実際には、現在の(AbsoluteLayoutなし)特定の位置に表示されるビューを1つだけ表示する必要があり、この位置は実行時に計算されます。 –
も 'view.setTranslationX()'または 'view.offsetLeftAndRight()'を参照してください。 –