رفتن به مطلب
  • 0

فهمیدن وضعیت باز یا بسته بودن کیبورد


mr.ehsan8001

سوال

سلام من شدیدا نیاز دارم برای برنامم که کاربر در حال استفاده از کیبورد هست یا خیر.

این کد رو پیدا کردم که درست نفهمیدم دو خط اول یعنی قسمت activity root چیه

-------------------------------------------------------------------------------

Rather than requiring a custom Layout type, a much simpler solution is to give your activity's root view a known ID, say @+id/activityRoot, hook a GlobalLayoutListener into the ViewTreeObserver, and from there calculate the size diff between your activity's view root and the window size:

final View activityRootView = findViewById(R.id.activityRoot);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
        if (heightDiff > dpToPx(this, 200)) { // if more than 200 dp, it's probably a keyboard...
            // ... do something here
        }
     }
});

Using a utility such as:

public static float dpToPx(Context context, float valueInDp) {
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, valueInDp, metrics);
}

Easy!

Note: Your application must set this flag in Android Manifest android:windowSoftInputMode="adjustResize" otherwise above solution will not work.

 

-------------------------------------------------------------------------------------------

لینک ارسال
به اشتراک گذاری در سایت های دیگر

3 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

روت ویو  میتونه لایوت اکتیویتیه برنامتون ک باز هست و  کاربر داخل اون هست باشه

 

فرضا از RelativeLayout استفاده کردیم که لایوت اکتیویتیمون هست و سایر ویو ها داخل این RelativeLayout هستن

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/rootView"
                >

داخل OnCreate هم میایم و FindViewById میکنیم و مشخص میکنیم 

RelativeLayout rootView = (RelativeLayout) findViewById(R.id.rootView);

 

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

 

 rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                int height = rootView.getRootView().getHeight() - rootView.getHeight();
                if (height > 100) { 
                     // KeyBoard Baze
                }else if (height < 100) { 
                    // KeyBoard Bastas
                }
            }
        });

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 4 ساعت قبل، Elyas Erfani گفته است :

روت ویو  میتونه لایوت اکتیویتیه برنامتون ک باز هست و  کاربر داخل اون هست باشه

 

فرضا از RelativeLayout استفاده کردیم که لایوت اکتیویتیمون هست و سایر ویو ها داخل این RelativeLayout هستن

 


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/rootView"
                >

داخل OnCreate هم میایم و FindViewById میکنیم و مشخص میکنیم 


RelativeLayout rootView = (RelativeLayout) findViewById(R.id.rootView);

 

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

 


 rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                int height = rootView.getRootView().getHeight() - rootView.getHeight();
                if (height > 100) { 
                     // KeyBoard Baze
                }else if (height < 100) { 
                    // KeyBoard Bastas
                }
            }
        });

 

سپاس، پس این کد برای درون برنامه خودم استفاده میشه، من خارج برنامم یک سرویس دارم که میخوام موقع استفاده از کیبورد غیر فعال بشه، چجوری باید برای کل گوشی این کار رو انجام بدم؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...