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

مشکل در راست چین شدن ایتم ها در popupMenu   (حل شد)

sana ebadi  7 سال پیش  7 سال پیش
+1 0

سلام بچه ها ....

من یه مشکل کوچولو دارم اونم اینه که وقتی دارم ایتم هایی رو برای popupMenuمینویسم (فارسی)

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

ولی واس من ن ؟

اینم تصویر مدرس 

 

و اینم تصویر از برنامه من 

ممنون میشم بچه ها ...

+2 0
توی منیفست supportRtl رو false کنید ، احتمالا از اون باشه :) (7 سال پیش)
0 0
ممنون با این کار opupMenuراست چین شد ولی navigation drawerبهم ریخت و چپ چین شد !!! چیکار کنم هر دوشون درس بشن ؟ (7 سال پیش)
+1 0
از این لینک استفاده کنید (7 سال پیش)
+1 0
ممنون ولی مشکل من این نیست مشکل من ایتم های داخل popupMenu هست که راست چین نمیشن (7 سال پیش)
+1 0
در این لینک گفته از اندروید 4.2 به بعد ساپورت میشه . البته راه حل هم داده . (7 سال پیش)
+1 0
برای Navigation Drawer ست کردید که از راست باز شه (Gravity.RIGHT)؟ (7 سال پیش)
0 0
بله من gravity رو بری navigationView = right گذاشتم . ولی بازم با گذاشتن supportRtl = "false توی منیفست بهم ریخت ولی پاپاپ منو درست شد . من میخوام هم پاپاپ و هم نوگیشنم درست باشن . (7 سال پیش)
+1 0
من با Popup Menu کار نکردم ولی اگه بشه کاستوم ازش بسازید می تونید راست چینش کنید. (7 سال پیش)
0 0
چجوری کاستومش کنم نی چجوری یه اداپتر باسزم براش؟ (7 سال پیش)
+1 0
تو Stackoverflow سرچ زدم آموزشش بود شمام یه سرچ بزنید پیدا می کنید. (7 سال پیش)
0 0
StackOverFlow سرچ کردم چنتا اموزش دیدم امیدوارم به درد بخوره ! ممنون از شما (7 سال پیش)
+1 0
اگه توی Manifests گزینه ی android:allowBackup رو false کنید navigation drawer هم تغییر میکنه چون نباید از menu ها استفاده کنید راه درستش اینکه لایه ی خودتون رو طراحی کنید و داخل drawer view قرار بدید. و استفاده از android:allowBackup درست نیس چون اگه زبان گوشی رو تغییر بدید کلا چیدمانتون بهم میریزه. (7 سال پیش)
0 0
من اصلا از allowBackupاستفاده نکردم! و اگه منظورتون این هست که از لیست ویو یا .. برای نوگیشنم استفاده کنم اگه دقت کنید خود نوگیشن دیفالت اندروید استادیو هم از راه header , menu استفاده کرده. من برای ساختش از لیست ووو هم میتونم استفاده کنم ممنون از شما (7 سال پیش)
 برای این سوال 2 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
Ghost  7 سال پیش
+3 0

سلام

من خودم اینجوری PopupMenu میسازم و مشکل چپ چین بودن ندارم.

اول این کدها رو داخل لایه قرار بدید:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff"
    android:orientation="vertical" >
 
 <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="60dip"
        android:layout_height="60dip"
        android:layout_gravity="right"
        androidrc="@drawable/ic_menu" />
 
</LinearLayout>

داخل res یه فولدر بسازید به اسم menu و داخل menu یه فایل xml ایجاد کنید به اسم popup و این کدها رو بزارید داخلش:

 <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
 
    <item
        android:id="@+id/share"
        android:title="اشتراک گذاری"/>
    <item
        android:id="@+id/contact "
        android:title="ارتباط با ما"/>
    <item
        android:id="@+id/web"
        android:title="سایت ما">
        <menu>
            <item
                android:id="@+id/share"
                android:icon="@android:drawable/ic_menu_share"
                android:title="Share"/>
        </menu>
    </item>
 
</menu>

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

ImageButton btn = (ImageButton) findViewById(R.id.imageButton1);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                onPopupButtonClick(v);

            }
        });
    }


    public void onPopupButtonClick(View button) {
        PopupMenu popup = new PopupMenu(this, button);
        popup.getMenuInflater().inflate(R.menu.popup, popup.getMenu());

        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Toast.makeText(PopActivity.this,
                        "Clicked popup menu item " + item.getTitle(),
                        Toast.LENGTH_SHORT).show();
                switch (item.getItemId())
                {
                    case R.id.share:
                        Intent intent = new Intent(android.content.Intent.ACTION_SEND);
                        intent.setType("text/plain");
                        intent.putExtra(Intent.EXTRA_TEXT, "your text"); //put content
                        startActivity(intent);
                        return true;
                    case R.id.contact:
                        Intent email = new Intent(Intent.ACTION_SEND);
                        email.putExtra(Intent.EXTRA_EMAIL, new String[]{ "s.jazayeri@gmail.com" });
                        email.putExtra(Intent.EXTRA_SUBJECT, "subject");
                        email.putExtra(Intent.EXTRA_TEXT, "message");
                        email.setType("message/rfc822");
                        startActivity(Intent.createChooser(email, "ایمیل خود را انتخاب کنید :"));
                        return true;
                    case R.id.web:
                        Intent browserIntenti = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.uncox.com/"));
                        startActivity(browserIntenti);
                        return true;

                }
                return false;
            }
        });

        popup.show();

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

منبع

0 0
ممنن از شما من مراحل ساخت popupMenu رو بلدم و اگه دقت کنید من هم همینو همین جوری درست کردم مشکل من فقط اینه که ایتم های من همین ایتم های پاپاپ رو میگم مثلا همین "اشتراک گذاری" ، "ارتباط با ما " و "سایت ما " ، این ایتم ها سمت راست نمیفتن میفتن چپ. حالا چیکار کنم این ایتم ها راست چین شن؟ کلی اموزش از StackOverFlow دیدم که کار با gravityو ... بود هیچ کدوم به درد نخورد... خب شما راه حلی برای حل این مشکل دارید ایا ؟ (7 سال پیش)
0 0
لطف کردید خیلی عالی بود ولی من اموزش popupMenu رو نمیخواستم بازم لطف کردید عالی بود به خصوص استفاده از اون ایمیل و ... در کل عالی بود موفق باشید . (7 سال پیش)
0 0
سلام. من این کدها رو برای ساخت popup استفاده کردم. روی اندروید 4 کار میکنه اما 2 نه. لطفا راهنمایی کنید برای اندروید 2 باید چکار کنم. تشکر (7 سال پیش)
0 0
سلام . من پاسخ صحیح رو دادم لینک شما می تونید با اضافه کردن کد android:layoutDirection="rtl" به تگ اون ویویی که قراره با کلیک روی اون popupMenu باز بشه ، قرار بدید و ربطی به نسخه اندروید ند اره یعنی تستی که من انجام دادم از اندروید 3 بود و جواب داد. پس شاید روی 2 کار نکنه . و نکته ای که هست اینه که دوست من چرا نسخه 2 ؟ شما برای داشتن کاربرای بیشتر خودتون رو از مزیت های خوبی که نسخه های بالاتر دارن محروم نکنید . کسی که اندروید 2 داره فک کنم به اندروید اهمیت بده . پس حداقل از api =11 شروع کنید یا همون 15 که مناسبه . من از api=17 استفاده میکنم و مطمعن هستم که خیلی از کاربران مشتاق رو ساپورت میکنه :) (7 سال پیش)
پاسخ به سوال 
sana ebadi  7 سال پیش
+1 0

 پاسخ صحیح

خب بچه ها با کمک گرفتن از لینک هایی که دوستان لطف کردن و معرفی کردن و پاسخ دوستان عزیز 

که از همه ممنون و مچکرم . همگی لطف کردید.

خب من از همه نظرات و پاسخ ها یه پاسخ کلی در نظر میگرم که بقیه استفاده کنن.( ** این تاپیک برای اموزش popupMenu نیست **)!!!

خب برای استفاده از popupMenu  باید از یک view استفاده شه (TextView , Button , ImageView . ImageButton , .......) !

خب ربطی به api  نداره شما میتونید از api = 11 استفاده کنید . 

ولی باید این خط کدو به اون view یی که قراره با کلیک روی اون popupMenu باز شه توی لایه اتون اضافه کنید همین !

android:layoutDirection="rtl"





<TextView
android:layout_width="200dp"
android:layout_height="70dp"
android:text="Hello World!"
android:id="@+id/txt_popup"
android:textColor="#121212"
android:textSize="32dp"
** android:layoutDirection="rtl" **
android:layout_centerInParent="true"/>

باز هم از همه ممنونم . بالاخره پیدا شد ....  این تصویر جالب نیست فقط برای تست و توجیه منظورم هست ..

لطف کردید...موفق باشید

 

 


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