Létrehoztam néhány egyéni elemet, és programozottan a jobb felső sarokba akarom helyezni őket (n
pixelre a felső szélétől és m
pixelre a jobb szélétől). Ezért meg kell kapnom a képernyő szélességét és magasságát, majd be kell állítanom a pozíciót:
int px = screenWidth - m;
int py = screenHeight - n;
Hogyan kapom meg a screenWidth
és screenHeight
értékeket a fő Activity-ben?
Ha a megjelenítési méreteket pixelben szeretné megadni, használhatja a getSize
parancsot:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Ha nem egy Activity
-ben vagy, akkor a WINDOW_SERVICE
segítségével megkaphatod az alapértelmezett Display
értéket:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Ha egy fragmentumban vagy és ezt szeretnéd elérni, akkor használd az Activity.WindowManager-t (Xamarin.Androidban) vagy a getActivity().getWindowManager() (java-ban).
A getSize
bevezetése előtt (az API 13. szintjén) a getWidth
és getHeight
módszereket használhattad, amelyek mára elavultak:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
Az Ön által leírt felhasználási esethez azonban megfelelőbbnek tűnik egy margó/tömés az elrendezésben.
Egy másik lehetőség a következő: DisplayMetrics
Egy struktúra, amely általános információkat ír le a kijelzőről, például a méretét, sűrűségét és a betűtípus méretezését. A DisplayMetrics tagok eléréséhez inicializáljunk egy objektumot a következőképpen:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
A widthPixels
segítségével információt kaphatunk a következőkről:
"A kijelző abszolút szélessége pixelben."
Példa:
Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);
Az egyik módja:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Ez elavult, és helyette a következő kódot kell kipróbálnod. Az első két sor kód a DisplayMetrics
objektumokat adja. Ez az objektum olyan mezőket tartalmaz, mint a heightPixels
, widthPixels
.
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
Először szerezd meg a nézetet (pl. a findViewById()
segítségével), majd használd a getWidth() parancsot magára a nézetre.