رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

تغییر خودکار Layout برای Landscape و Portrait بدون اجرای مجدد برنامه


پست های پیشنهاد شده

سلام به همه دوستان،

من یه برنامه دارم که Layoutهاش تو حالت Portrait و Landscape چیدمانش متفاوته و میخوام به صورت خودکار با تغییر روتیشین تغییر کنه ولی نمیخوام برنامه از اول لود بشه.

برای جلوگیری از لود مجدد برنامه onConfigurationChanged رو نوشتم ولی در این حالت دیگه Layout تغییر نمیکنه.

لطفاٌ اگه راه حلی دارید بفرماید.

ممنون

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

base.onConfigurationChanged() رو توی این تابع بنویس تا layout دوباره تغییر کنه.

و به نظر من به جای اینکه از اجرای مجدد اکتیویتی جلوگیری کنی به جاش بیا وضعیت صفحه  رو یه جایی ذخیره کن بعد از اینکه اکتیویتی دوباره ساخته شد و لیوت تغییر کرد دوباره تغییرات رو روی لیوت اعمال کن

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

base.onConfigurationChanged() رو توی این تابع بنویس تا layout دوباره تغییر کنه.

و به نظر من به جای اینکه از اجرای مجدد اکتیویتی جلوگیری کنی به جاش بیا وضعیت صفحه  رو یه جایی ذخیره کن بعد از اینکه اکتیویتی دوباره ساخته شد و لیوت تغییر کرد دوباره تغییرات رو روی لیوت اعمال کن

چنین متودی وجود نداره!!

base.onConfigurationChanged یا onConfigurationChanged.base

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

سلام به همه دوستان،

من یه برنامه دارم که Layoutهاش تو حالت Portrait و Landscape چیدمانش متفاوته و میخوام به صورت خودکار با تغییر روتیشین تغییر کنه ولی نمیخوام برنامه از اول لود بشه.

برای جلوگیری از لود مجدد برنامه onConfigurationChanged رو نوشتم ولی در این حالت دیگه Layout تغییر نمیکنه.

لطفاٌ اگه راه حلی دارید بفرماید.

ممنون

سلام

بهتره که در مین فیست این خط کد رو اضافه کنید:

[shcode=xml]

android:configChanges="keyboardHidden|orientation|screenSize"

[/shcode]

یعنی در هر اکتیویتی که میخاید در هنگام تغییر rotation برنامه از اول لود نشه به این صورت این خط کد رو بهش اضافه میکنید کد هاش رو به این صورت تغیر بدید و اون خط کد بالا رو در اینجا قرار بدید:

[shcode=xml]

       

            android:name="com.test.bbmmii.MainActivity"

            android:label="@string/app_name" 

            android:configChanges="keyboardHidden|orientation|screenSize"

            android:theme="@style/Theme.Transparent">

   

[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر
این کار رو کردم ولی مشکل این روش اینه که در صورتی که لیوت های portrait و landscape متفاوت باشه زمانی که روتیت میشه لیوت مرتبط رو لود نمیکنه و همواره فقط یک لیوت لود میکنه!
لینک ارسال
به اشتراک گذاری در سایت های دیگر
این کار رو کردم ولی مشکل این روش اینه که در صورتی که لیوت های portrait و landscape متفاوت باشه زمانی که روتیت میشه لیوت مرتبط رو لود نمیکنه و همواره فقط یک لیوت لود میکنه!

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

خوب شما باید این خط کد رو در هر لایوتی که میخاید قرار بدید تا تنها در یک لایوت نباشه 

ینی در هر اکتیویتی کدی که در مینفیست قرار داره این خط کد باید اضافه بشه

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

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

خوب شما باید این خط کد رو در هر لایوتی که میخاید قرار بدید تا تنها در یک لایوت نباشه 

ینی در هر اکتیویتی کدی که در مینفیست قرار داره این خط کد باید اضافه بشه

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

اگه بخوام کامل توضیح بدم باید بگم:

در حالت عادی اگر برای حالت portrait و landscape لیوت های مختلفی داشته باشیم با تغییر orientation اندروی لیوت مربوطه رو انتخاب میکنه و نمایش میده، ضمن اینکه در این حالت با تغییر orientation برنامه از اول اجرا میشه (تابع onCreate مربوط به MainActivity دوباره فراخوانی میشه).

اگر بخوایم از اجرای دوباره برنامه جلوگیری کنیم میتونیم همونطوری که گفتید در Manifest برای اکتیویتی مورد نظر کدی که گفتید رو اضافه کنیم:

landroid:configChanges="keyboardHidden|orientation|screenSize"

در این حالت با تغییر orientation از اجرای مجدد برنامه جلوگیری میشه

ولی مشکلی که این روش داره اینه که اگر برای حالت portrait و landscape لیوت های مختلفی داشته باشیم دیگه لود نمیشن و فقط لیوت مربوط به portrait لود میشه!!

حالا سوال من اینه که چه شکلی میتونم با تغییر orientation جلوی اجرای مجدد برنامه رو بگیرم ضمن اینکه لیوت مربوط به اون orientation به صورت خودکار لود بشه!

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

حالا فهمیدم مشکلتون چیه اما متاسفانه من نمیدونم راه حلش رو:(

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

ممنون:heart:

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

سلام به همه دوستان،

من یه برنامه دارم که Layoutهاش تو حالت Portrait و Landscape چیدمانش متفاوته و میخوام به صورت خودکار با تغییر روتیشین تغییر کنه ولی نمیخوام برنامه از اول لود بشه.

برای جلوگیری از لود مجدد برنامه onConfigurationChanged رو نوشتم ولی در این حالت دیگه Layout تغییر نمیکنه.

لطفاٌ اگه راه حلی دارید بفرماید.

ممنون

سلام

تا جایی که من می دانم برای این منظور باید یک پوشه در پوشه ی res برنامه ایجاد کنید به نام layout-land و در آن یک layout برای حالت landscape بسازید. توجه کنید که هر دو فایل layout باید دارای یک نام باشند.

حال وقتی برنامه اجرا می شود خود اندروید تصمیم می گیرد که کدام یک از layout ها را اجرا کند. اگر برنامه در حالت landscape باشد، layout مناسب آن که در پوشه ی layout-land قرار دارد را اجرا می کند.

برای جزئیات بیشتر می توانید کتاب Android Programming-The Big Nerd Ranch Guide را دانلود کنید و فصل 3 آن را مطالعه نمایید.

شاد باشید : )

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

تا جایی که من می دانم برای این منظور باید یک پوشه در پوشه ی res برنامه ایجاد کنید به نام layout-land و در آن یک layout برای حالت landscape بسازید. توجه کنید که هر دو فایل layout باید دارای یک نام باشند.

حال وقتی برنامه اجرا می شود خود اندروید تصمیم می گیرد که کدام یک از layout ها را اجرا کند. اگر برنامه در حالت landscape باشد، layout مناسب آن که در پوشه ی layout-land قرار دارد را اجرا می کند.

برای جزئیات بیشتر می توانید کتاب Android Programming-The Big Nerd Ranch Guide را دانلود کنید و فصل 3 آن را مطالعه نمایید.

شاد باشید : )

ممنون از راهنماییتون، ولی این روش زمانی جواب میده که از configChanges استفاده نکرده باشیم! زمانی که این ویژگی ست میشه و بعد از onConfigurationChanged استفاده میشه دیگه لیوت های portrait و landscape به صورت خودکار لود نمیشن!

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

سلام. اندرویدنویسی تقویم 1394 چقدر زمان میبره و چقدر هزینه اش میشه؟ ایمیل بزنید یا تماس بگیرید.

[email protected]

[email protected]

09142101720

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

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...