2011-08-15 9 views
6

के साथ पूर्ण स्थिति बदलें मेरे पास एक दृश्य है जो कुछ छवियों पर एक विशिष्ट स्थिति पर प्रदर्शित होना चाहिए, मैंने पहले से ही AbsoluteLayout का उपयोग करके किया है, लेकिन मैं इसका उपयोग नहीं करना चाहता हूं और मैं एक ही परिणाम प्राप्त करने की कोशिश कर रहा हूं एक फ्रेमलेआउट के साथ।फ्रेमलेआउट

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 वी पर प्रदर्शित किए जाते हैं (0,0

लेकिन मैं इस काम के नहीं मिल सकता है, यह मेरी दो प्रयास है) (बाएं कोने कोने)।

+0

क्या आपके लिए कोड में गतिशील रूप से लेआउट बनाना आवश्यक है? XML – Egor

+0

में फ़्रेमलेआउट के साथ काम करते समय मुझे इस तरह की समस्याएं कभी नहीं मिलीं, असल में, मुझे केवल एक दृश्य दिखाना होगा जो किसी विशिष्ट स्थिति पर वर्तमान (AbsoluteLayout के बिना) पर दिखाई देता है, और इस स्थिति को रनटाइम पर गणना की जाती है। –

+1

भी देखें 'view.setTranslationX() 'या' view.offsetLeftAndRight() ' –

उत्तर

17

जब आप लेआउट पैराम्स में गुरुत्वाकर्षण स्थापित करते हैं तो यह काम करना चाहिए।

एक शुरुआत के लिए

params.gravity = Gravity.LEFT | Gravity.TOP; 

की कोशिश करो।

संबंधित मुद्दे