آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

پیدا کردن مختصات x و y یک view

120578  7 سال پیش  7 سال پیش
0 0

سلام دوستان چطور میشه مختصات x و y یک view رو پیدا کنم . من از متدهایgetX وgetY استفاده کردم اما مقدار صفر رو بر میگردونه

کد من اینه

ch1=(CheckBox) findViewById(R.id.ch1);
ch2=(CheckBox) findViewById(R.id.ch2);
float startx =  ch1.getX();
float starty = ch1.getY();
float endx = ch2.getX();
float endy = ch2.getY();

Log.i("Log","x1="+startx+" y1="+starty+" x2="+endx+" y2="+endy);
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Reza  7 سال پیش
+1 0

سلام

 int[] location_Of_View = new int[2];
view.getLocationOnScreen(location_Of_View);

left_View= location_Of_View[0];
 top_View= location_Of_View[1];
 right_View= left_View+ view.getWidth();
 bottom_View= top_View+ view.getHeight();
0 0
سلام داداش متاسفانه این کد هم مقدار صفر رو بر میگردونه (7 سال پیش)
0 0
من دارم از همین استفاده میکنم و درسته . حتما view شما سمت چپ و بالای صفحه قرار داره که 0 برمیگرده . (7 سال پیش)
0 0
نه بالا نیست . کده درسته اما یه چیزی که جالب هست اینه که زمانی که برای رخداد کلیک یک آیتم این کد رو مینویسم مختصات رو میده مشکلی هم نیست . اما داخلoncreate که این کد رو مینویسم مختصات هر view رو که میدم صفر بر میگردونه. نمیدونم مشکلش چیه (7 سال پیش)
0 0
کدهای onCreate قبل از محاسبات اندازه و موقعیت layout هست . برای همین در onCreate هنوز اندازه ها و موقعیت ها صفره . متد onAttachedToWindow رو در اکتیویتی overrid کن و این کدها رو توی اون بذار وکاری که میخوای همونجا انجام بده ببین درست میشه . (7 سال پیش)
پاسخ به سوال 
kazemian  7 سال پیش
+1 0

احتمالا زمانی که مختصات ویوی مورد نظرتون رو میگیرید هنوز رندر نشده برای همین مقدار صفر رو برمیگردونه

شما میتونید از متد زیر استفاده کنید

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


این متد چک میکنه هروقت ویوی مورد نظر  کاملا لود شد عملیات شما رو انجام میده

0 0
سلام ممنون عزیز با این متد درست شد. خیلی لطف کردین (7 سال پیش)
0 0
خواهش میکنم عزیز،خوشحال میشم کمکی کرده باشم (7 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .