2013-12-12 23 views
9

Göreli/Doğrusal Düzen'in çalışma zamanı boyutlarını gerekli kıldım.Android'de Göreceli - Doğrusal düzeninin programlı genişliği ve yüksekliği nasıl elde edilir?

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); 

düşüncelerinizi paylaşın.

cevap

2

Eh bu arada uygulayan görünüm ağaç The Observer kullanabilirsiniz süreci.

Bu yardımcı olur umarım.

+0

Genişliği alabiliyor musunuz? –

+0

@ N.Droid, Evet. her ikisi de. –

14

bu

@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

Mükemmel çalışıyor, sorunumu çözdüm, Kabul edilen yanıt .. Çok teşekkürler –

+1

Soruyu kabul et ve kapat. Teşekkürler – user2511882

+2

Cevap zaman 7 dakika kadar cevap kabul edemez, sadece 2 dakika beklemek :) –

0

böyle deneyin deneyin:

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

Sen görünümü pencereye bağlı çağrılacak alacak göreceli düzeni ViewTreeObserver bir OnGlobalLayoutListener ekleyebilir ve fiili var boyu atandı.

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
biz doğru yüksekliğini ve en kısa sürede aktivite sadece düzeni tamamen

şişirilmiş olmadığından oluşturulan bir görünüm veya düzen wight alamayabilirsiniz

yüzden

Bir sağlayabilirsiniz 1.either runnable metodu, birkaç saniye sonra tetiklenir ve bu da genişlik ve yükseklik özelliklerini alan bir işlevi çağırır. Bağıl düzeni için,

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(); 

    } 
}); 

Bu örnek Doğrusal düzeni için aynı izleyin:

2.we

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

Neden zaten @vipul zaten yayınlanmıştır aynı cevap verdik. Yerin cevapları kopyalamanız gerekmiyor, bunun yerine cevabınız benzerse, bunu yapabilirsiniz. – pyus13

+0

Üzgünüm, cevabın bana göre aynı anda yazdığını ve kopyalamadığını - teşekkürler –