Etkinliğimin görünür boyutunu nasıl bilebilirim? Bir Aktivitede görünen boyut nasıl elde edilir?
Ben Aktivite gerçek boyutunu almaya çalışıyorum,değil
getHeight()
ve
getWidth()
yükseklik ve genişlik, bana tam ekran boyutuna verir
.
Etkinliğimin görünür boyutunu nasıl bilebilirim? Bir Aktivitede görünen boyut nasıl elde edilir?
Ben Aktivite gerçek boyutunu almaya çalışıyorum,getHeight()
ve
getWidth()
yükseklik ve genişlik, bana tam ekran boyutuna verir
Etkinliğimin tam yüksekliğini bilmenin bir yolunu buldum: Başlık çubuğunun ve görev çubuğunun arkasındaki tüm kullanılabilir ekranı dolduran bir görünümünüz varsa, bu etkinliğin gerçek yüksekliğini elde etmek için yalnızca getBottom()
kullanın.
getBottom() nedir? Bu yöntemin hangi sınıfı var? –
10 Herhangi bir görünüm: http://developer.android.com/reference/android/view/View.html#getBottom() ebeveyne göreli olup, bu nedenle tüm kullanılabilir ekranı dolduran bir görünüm olması için ihtiyacınız olan şeydir. bu durumda. – Mike
int height = this.getWindow(). GetDecorView(). GetBottom(); – kurt
Ben 'u düşünün Activity.getWindow()
ve Window.getDecorView()
'a bakmak isteyeceksiniz ve bunun genişliğini/yüksekliğini elde edersiniz.
Kök düzenimi kullanarak bunu yaptım, sorun, ilk kez çalıştırıldığında onCreate/onStart/onResume yöntemlerinde bu bilgiyi (genişlik ve yükseklik) alamıyor olmanızdır.
bundan sonra herhangi bir anda, boyut (LinearLayout/FrameLayout/TableLayout/vs), benim durumumda ben kullanıyordum kök düzeni alınabilir FrameLayout:
FrameLayout f = (FrameLayout) findViewById(R.id.layout_root);
Log.d(TAG, "width " + f.getMeasuredWidth());
Log.d(TAG, "height " + f.getMeasuredHeight());
ya:
FrameLayout f = (FrameLayout) findViewById(R.id.layout_root);
Log.d(TAG, "width " + f.getRight());
Log.d(TAG, "height " + f.getBottom());
Buradan düzenlenir --------------------------------------------- -----------
Bu bilgiyi onCreted yönteminde almanın bir yolunu buldum, ancak yalnızca bir etkinliğiniz varsa . Benim durumumda ikinci aktiviteyi çağıran ana aktivitem var.
Ikinci_aktivite çağırmadan önce ana_aktiflik durumunda, yeni bir Itent tarafından, ikinci_aktivite için ek bilgi ekleyebilirim.
int width = getIntent().getExtras().getInt("width");
int height = getIntent().getExtras().getInt("height");
basit yok: bunu yaparken ikinci aktivitenin onCreate yöntemine üzerinde bu bilgileri alabilirsiniz ikinci aktivitesi üzerine Bundan sonra
Intent i = new Intent(this, SecondActivity.class);
i.putExtra("width", f.getMeasuredWidth());
i.putExtra("height", f.getMeasuredHeight());
startActivity(i);
: Burada ilk aktivitesi üzerine ihtiyaç koddur Doğru yol alma getDefaultSize
işlevini kullanarak boyut görüntüle.Görünüm tüm aktivitesi üzerine yayılmış durumda, sen aktivite istemci bölge boyutlarını almak için önümüzdeki yaklaşımı kullanabilirsiniz:
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int viewWidth = getDefaultSize(getWidth(), widthMeasureSpec);
int viewHeight = getDefaultSize(getHeight(), heightMeasureSpec);
...
}
görünümü Tüm aktivitesi üzerine uzanan yapmak için:
MyView testView = new MyView(this);
LinearLayout testViewGroup = new LinearLayout(this);
testView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
testViewGroup.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
testViewGroup.addView(testView);
setContentView(testViewGroup);
yüksekliğini alın etkinlik:
public static int getActivityHeight(Activity activity)
{
return activity.findViewById(android.R.id.content).getHeight();
}
alın Eğer DataBinding kullanıyorsanız
binding
olduğu faaliyetin genişliği
public static int getActivityWidth(Activity activity)
{
return activity.findViewById(android.R.id.content).getWidth();
}
(sen olmalıdır), sen binding.getRoot().getHeight()
çağırabilir ViewDataBinding
DataBindingUtil.setContentView()
veya diğer tür DataBindingUtil
yöntemi ile yarattı. Eğer OnGlobalLayoutListener kaldırmak zorunda yoksa bu mizanpajınızda her zaman Bir değişiklik koşacağım
binding.getRoot().getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
binding.getRoot().getViewTreeObserver().removeOnGlobalLayoutListener(this);
int height = binding.getRoot().getHeight();
}
});
Not: Eğer düzen böyle yapabilirsiniz boyutuna sahiptir kadar beklemek gerekir.
Ben daha fazla zaman tasarrufu cevapları gibi:
myActivity.getWindow().getDecorView().getHeight();
myActivity.getWindow().getDecorView().getWidth();
Bunu neden istiyorsun? Çoğu durumda bu gerekli değildir ve ihtiyacınız olabilecek en çok şey, farklı ekran boyutlarını işlemek için android ile gelen daha iyi teknikler ile yapılabilir. – Janusz
Etkinliğin genişliği ve yüksekliğinde kaç piksel olduğunu bilmem gerekiyor. Kartografik hassasiyetle ilgisi var. – Tsimmi
Haritayı görüntülemek için bir harita görünümü veya özel bir görünüm kullanıyor musunuz? – Janusz