بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل در رابطه با طراحی  UI  - ثابت نگه داشتن نسبت عرض و ارتفاع (حل شد)

مدیریت گفتگو
MeyrOOn 11 سال پیش
آخرین تغییر: 11 سال پیش

با استفاده از ImageButton بجای Button و ست کردن مشخصه FitXY  مشکل حل شد.
الان دیگه آیکونها و عکسهای مربع یا دایره تو هر اسکرینی که برن دچار مشکل نمیشن !




 

سلام دوستان ...

برای اینکه نسبت ارتفاع و عرض یک دکمه 1 به 1 باشه باید چیکار کنم ؟
میخوام به دکمه ها و layout های در بر گیرندشون وزن بدم که هر کدوم یه درصدی از فضا رو پر کنن ..
ولی میخوام دکمه ها مربع باشند و وقتی اندازه ها تغییر میکنه مربع بمونن !!!

نظرات

MeyrOOn 11 سال پیش
در واقع نمیخوام اندازه بدم ... چون مثلاً اگه بزنم 48dip X 48dip همه چیز درسته !!! ولی تو یه سری صفحه ها 48dip کوچک میشه تو یه سری بزرگ !!! باید نسبت بزنم !!! چجــــــــــــــــــــــــــــــــــــــــوری ؟!
doost_fu 11 سال پیش
یه خورده گنگ نوشتید ولی اگه می خوایید هم به ارتفاع و هم به عرض وزن بدید راهش اینه که دکمه داخل یک لایه قرار بدید بعد مثلا به خود دکمه از نظر عرضی وزن بدید و ارتفاعش به اندازه پدرش ! ( که همون لایه باشه ) قرار بدید بعد به لایه از نظر ارتعاع وزن قرار بدید !
MeyrOOn 11 سال پیش
قضیه اینه که آیکونی که میخوام برای دکمه ها بزارم گِرد هست ( دایره ) چون دایره هست اگه نسبت ارتفاع عرضش بهم بخوره دیگه دایره نیست که !!!!!!! :دی
doost_fu 11 سال پیش
نمیدونم فقط یه چیزی ! تو قسمت تنظیمات همین اندازه و ... یه گزینه هست به اسمه scale type تغییرش بده گزینه هاشو تست کن شاید کارت راه بندازه ! : )

پاسخ‌ها 3

Andronymous 11 سال پیش

سلام منظور شما رو دقیقا میدونم ولی من تا حالا راهی جز این ایده ای که الان میگم پیدا نکردم.
شما میتونین از دو LinearLayout داخل هم یکی vertical ویکی Horizontal  به شکل زیر استفاده کنین :

اول لایه ی Horizontal رو قرار بدین که شامل سه تا کنترل برای وزن دادن میشه که یکی از اونها  یک LinearLayout  به حالت vertical هست که  قراره دگمتون توش قرار بگیره و اون دوتای دیگه دلخواه هستن و قراره شفاف باشن مثلا میتونین FrameLayout بزارین به این سه کنترل داخل HorizontalLayout ، وزن های مورد نظر رو بدین (Width Weight) حالا میریم سراغ VerticalLayout که باز اون خودش مثل قبل با قرار دادن سه تا FrameLayout به سه قسمت تقسیم بشه و کنترل های داخلش وزن دهی میشه (Height Weight)
با وزن دادن صحیح میتونین نسبت عرض و ارتفاع فضایی که در وسط ایجاد شده رو تنظیم کنین!

در آخر کافیه button مورد نظرتون رو توی FrameLayout وسطی بذارین و از ارتفاع و عرض اون رو  fill_parent قرار بدین!
البته یه ایرادی که این روش داره اینه که توی گوشی های مختلف چون نسبت ارتفاع گوشی به عرضش متغیره شما نمیتونین با وزن دادن عرض و ارتفاع طبق یک معیار خواص مطمن باشین که توی همه ی گوشی ها دگمتون حتما به شکل دایره ایه!
توی بعضی گوشی ها دایره ای خواهد بو توی بعضی بیضی عرضی و توی بعضی بیضی طولی ولی این بیضی خیلی کشیده نیست!
باز میگم این یک ایدست و ممکنه راه بهتری باشه که دوستان میان و میگن!

این کد xml چیزیه که گفتم توی یک فایل xml کپی کنین و نتیجه رو توی ساز های مختلف گوشی ببینین:
نسبت وزن ها:

عرض
0------50: 0.1562
50-----150: 0.3125
150----320: 0.5312

ارتفاع
0------100: 0.2083
100-----200: 0.2083
200------480: 0.5833


 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#aaaaaa"
    android:orientation="horizontal" >

    <FrameLayout
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="0.1562"
        android:background="#aa0000aa" >
    </FrameLayout>

    <LinearLayout
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="0.3125"
        android:orientation="vertical" >

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="0.2083"
            android:background="#aaaa5500" >
        </FrameLayout>

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="0.2083" >

            <Button
                android:id="@+id/button1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="#ffffff"
                android:text="Button" />
        </FrameLayout>

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="0.5833"
            android:background="#aaaa5500" >
        </FrameLayout>
    </LinearLayout>

    <FrameLayout
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="0.5312"
        android:background="#aa0000aa" >
    </FrameLayout>

</LinearLayout>

نظرات

Andronymous 11 سال پیش
هر چقدر سعی کردم عکس آپلود نشد کد رو استفاده کنین توی فایل Xml.
MeyrOOn 11 سال پیش
مچکرم .... مرسی که وقت میزاری دوست من الان امتحان میکنم و خبر میدم ...
MeyrOOn 11 سال پیش
آقا خـــــــــــــــــــــــــــــــــــــــــودشه دمت گرم ! حالا باید بشینم بفهمم چیکار کردی :دی بعد این روش رو رو طرح خودم پیاده کنم... بازم مزاحمت میشم احتمالاً :دی
MeyrOOn 11 سال پیش

من نمیدونم داستان طراحی توی اکلیپس چیه ولی میدونم به طرز غیر قابل انکاری پدر آدم رو در میآره !!!!!

هرجاش رو درست میکنی یه جاش در میره !!

 

بابا مگه Visual Studio چشه ؟!؟!؟
هرچی رو دلت میخواد هرجا که دوس داری تو هر اندازه میزاری !!!!!

 

شما رو به هرکی که میپرستید اگه لینکی، آموزشی یا کتابی واسه طراحی سراغ دارید بگید من بخونم ..

 

الان با هزار بدبختی و نصف روز وقت گذاشتن این رو طراحی کردم آخرش هم تو تبلت آیکون ها اندازه کله مورچه میشه !!!

عاجزانه درخواست کمک دارم ..
تا وسط های فصل 7 خوندم ، استاد هم چیزی راجب این مساله نگفته ( جز همون فصل اول که معرفی بود فقط !! )

اگه توو فصلهای بعدی هست بگید برم اونها رو ببینم ..
خلاصه کــــــــــــمــــــــــــــــــــــــــــــــــــــــک کـــــــــــــــــــــنــــــــــــــــــــــیــــــــــــــــــــــــــــــــــــــــــــــــــــــــــد !!!!!

 

نظرات

best_programmer 11 سال پیش
خب مشکل شما اینه که مقدار ثابت میدید بعد انتظار دارید ایکونای شما خود به خود تغییر کنن. یه راهش وزن دادن به لی اوت های راه دیکشم استفاده از پوشه های drawable-xxhdpi drawable-xhdpi و غیره هست همچنین برای طراحی در landscape , portrait دو تا پوشه layout-land و layout رو ایجاد کنید
MeyrOOn 11 سال پیش
دوست من ، وزن رو به یک طرف میشه داد، یا ارتفاع یا عرض ( یا حداقل من در این حد بلدم !! ) من میخوام ارتفاع و عرض آیکون با هم با نسبت 1 به 1 کوچک و بزرگ بشوند اگر ممکنه واضح تر کمکم کنید ..
Andronymous 11 سال پیش
اون راهی که گفتم کمکتون نکرد؟ عکس هم برای راهنمایی گذاشتم متاسفانه یا آپلود نشده یا نشون نمیده!
MeyrOOn 11 سال پیش
متاسفانه متوجه اون راه حلتون نشدم ! عکس هم نیومد دیگه بدتر .. نمیشه یه بار دیگه عکس رو بزارید !؟
nimar 11 سال پیش

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

چجوری ممکنه

چون معمولا وقتی وزن داده میشه یه طرف کشیده تر هست

نظرات

MeyrOOn 11 سال پیش
دست رو دلم نذار داداش من دو روز هست که مغزم داره منفجر میشه !!!!!
وحید 11 سال پیش
دوست عزیز مقدار ثابت بده چون چیزی که در ال دی پی آی 48 دیپ باشه برای ایکس اچ دی پی آی 96 دیپ دیده میشه یعنی خودش بزرگتر می شه.
MeyrOOn 11 سال پیش
خوب الان مقدار ثابت دادم ولی یه جاهایی خیلی کوچک و یه جاهایی خیلی بزرگ میشه !! بعدم مشکل الان روی اندازه تصویر نیست !! من یک Button مربع میخوام !! که ارتفاع و عرضش با هم تغییر کنه !!

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