2013-12-12 9 views
9

मुझे सापेक्ष/रैखिक लेआउट के रनटाइम आयामों की आवश्यकता है।प्रोग्रामेटिक रूप से चौड़ाई और सापेक्ष की ऊंचाई कैसे प्राप्त करें - एंड्रॉइड में रैखिक लेआउट?

activity_home.xml:

<RelativeLayout 
    android:id="@+id/rlParent" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
</RelativeLayout> 

HomeActivity.java:

private int width, height; 

RelativeLayout rlParent = (RelativeLayout) findViewById(R.id.rlParent); 

w = rlParent.getWidth(); 
h = rlParent.getHeight(); 

Log.i("Width-Height", width+"-"+height); 

अपने विचार साझा करें।

उत्तर

2

खैर मैं इस तरह से लागू कर दिया है: सापेक्ष लेआउट के लिए,

LinearLayout linearLayout = (LinearLayout)findViewById(R.id.layout); 
ViewTreeObserver viewTreeObserver = linearLayout.getViewTreeObserver(); 
viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     linearLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
     int width = linearLayout.getMeasuredWidth(); 
     int height = linearLayout.getMeasuredHeight(); 

    } 
}); 

यह उदाहरण रैखिक लेआउट के लिए है का पालन ही प्रक्रिया।

आशा है कि यह आपकी मदद करेगा।

+0

क्या आप चौड़ाई प्राप्त करने में सक्षम हैं? –

+0

@ एन.ड्रॉइड, हां। दोनों। –

14

प्रयास करें इस

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    // TODO Auto-generated method stub 
    super.onWindowFocusChanged(hasFocus); 
    updateSizeInfo(); 
} 

private void updateSizeInfo() { 
    RelativeLayout rlayout = (RelativeLayout) findViewById(R.id.rlayout); 
    w = rlayout.getWidth(); 
    h = rlayout.getHeight(); 
    Log.v("W-H", w+"-"+h); 
} 
+0

धन्यवाद यह पूरी तरह से काम करता है, मैंने अपनी समस्या हल की, स्वीकृत उत्तर .. बहुत बहुत धन्यवाद –

+1

प्रश्न स्वीकार करें और बंद करें। धन्यवाद – user2511882

+2

मैं आपके उत्तर समय से 7 मिनट तक उत्तर स्वीकार नहीं कर सकता, बस 2 मिनट के लिए प्रतीक्षा करें :) –

0

इस तरह का प्रयास करें:

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

public class AndroidResizeView extends Activity { 

    TextView textMyTextView; 
    Button myButton; 

    RelativeLayout rlayout; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.hightk); 

     rlayout = (RelativeLayout) findViewById(R.id.rlayout); 

     textMyTextView = (TextView) findViewById(R.id.textView1); 

     myButton = (Button) findViewById(R.id.button1); 

     myButton.setOnClickListener(new Button.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       updateSizeInfo(); 
      } 
     }); 
    } 

    @Override 
    public void onWindowFocusChanged(boolean hasFocus) { 
     // TODO Auto-generated method stub 
     super.onWindowFocusChanged(hasFocus); 
     updateSizeInfo(); 
    } 

    private void updateSizeInfo() { 

     textMyTextView.setText(String.valueOf("Width: " 
       + rlayout.getWidth() + "height ::" + rlayout.getHeight())); 

    } 

} 
4

आप रिश्तेदार लेआउट जो जब दृश्य खिड़की से जुड़ा हुआ है कहा जाता हो जाएगा की ViewTreeObserver करने के लिए एक OnGlobalLayoutListener संलग्न कर सकते हैं और यह वास्तविक है ऊंचाई इसे सौंपा गया है।

final RelativeLayout rl_cards_details_card_area = (RelativeLayout) findViewById(R.id.rl_cards_details_card_area); 
     rl_cards_details_card_area.getViewTreeObserver() 
       .addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

        @Override 
        public void onGlobalLayout() { 
         // TODO Auto-generated method stub 
         int w = rl_cards_details_card_area.getWidth(); 
         int h = rl_cards_details_card_area.getHeight(); 
         Log.v("W-H", w + "-" + h); 
         rl_cards_details_card_area.getViewTreeObserver() 
           .removeOnGlobalLayoutListener(this); 
        } 
       }); 
0

हम सही ऊंचाई और एक दृश्य या लेआउट के रूप में जल्द गतिविधि सिर्फ बनाई गई है के बाद से लेआउट को पूरी तरह से फुलाया नहीं है

की वाइट नहीं मिल सकता है तो

1.either आप एक दे सकते हैं चलने योग्य विधि कुछ सेकंड के बाद ट्रिगर की गई जो बदले में एक फ़ंक्शन को कॉल करती है जो चौड़ाई और ऊंचाई गुण प्राप्त करती है।

2.we दृश्य पेड़ obsever उपयोग कर सकते हैं

l = (RelativeLayout)findviewbyid(R.id.rl_cards_details_card_area); 
ViewTreeObserver observer = l.getViewTreeObserver(); 
    observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

     @Override 
     public void onGlobalLayout() { 
      // TODO Auto-generated method stub 
      ActivityClassName.this.getProperties(); 
     l.getViewTreeObserver().removeGlobalOnLayoutListener(
       this); 
    } 
}); 
void getProperties() { 
    int a= l.getHeight(); 
     int b = l.getWidth(); 
    Toast.makeText(getActivity,""+a+" "+b,1000).show(); 
    } 
+0

आपने इसका उत्तर क्यों दिया है जिसे @ वीपुल पहले ही पोस्ट कर चुका था। जगह जवाबों की प्रतिलिपि नहीं लेनी चाहिए, इसके बजाय यदि आपका उत्तर समान है तो आप ऊपर की ओर बढ़ सकते हैं। – pyus13

+0

खेद है कि उत्तर एक ही समय में मेरे द्वारा टाइप किया जा रहा था और इसे कॉपी नहीं किया - धन्यवाद –

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