موقعیت یک view در صفحه
سلام دوستان،من یک button دارم که میخوام موقعیتش رو روی صفحه تشخیص بدم.مثلا نسبت به چپش چقد فاصله داره
از دستور btn. getleft استفاده کردم اما وقتی مقدارش رو log میکنم صفر برمیگردونه درحالی که درست مرکز صفحه قرار داره
چطوری میتونم موقعیتش رو بگیرم؟
خوب من جوابش رو میدونم فکر کنم اگه این تاپیک رو نمیدیدم مثل من حد اقل یک روز علاف بشید تا بفهمبد مشکل از چیه.
احتمالا شما داخل onCreate مقدار رو میگیرید
چون RelativeLayout دوبار رندر میشه رندر شدنش بیشتر از بقیه ویو ها زمان میبره و چون شما در همون ابتدا دارید مقدار ویویی که داخلش هست رو میگیرید چون هنوز لود نشده مقدار رو صفر بر میگردونه پس راه حل چیه؟
یک متد به صورت زیر بنویسید:
public void onLoadActivity(final View v) {
ViewTreeObserver vto = v.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
v.getViewTreeObserver().removeOnPreDrawListener(this);
//v.getLeft ...
return true;
}
});
}
سپس داخل oncreate صداش بزنید و ویویی که میخواید موقعیتش رو بگیرید به عنوان ورودی براش بفرستید
onLoadActivity(yourView);
کار متد onLoadActivity اینه که چک میکنه هر وقت ویوی مورد نظر کاملا لود شد اونوقت عملیات شما رو انجام میده
موفق باشید
این موقعیت رو در صفحه میده :
private float btn_Left, btn_Top, btn_Right, btn_Bottom;
private int[] location_Of_Btn;
View btn= findViewById(R.id.btn);
btn.getLocationOnScreen(location_Of_Btn);
btn_Left = location_Of_Btn[0];
btn_Top = location_Of_Btn[1];
btn_Right = btn_Left + btn.getWidth();
btn_Bottom = btn_Top + btn.getHeight();
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .