لیست ویو + متریال دیزاین
سلام دوستان
می خواستم بدونم توی نمونه های متریال دیزاین ، چه جور یه دایره روی لیست ویو ایجاد می کنن ؟ مثلا برای اضافه کردن نظر ، کامننت و...
فرق لیست ویو با recycleView تو چیه؟
FloatingActionButton یه کنترل جدید از کتابخونه support Design هست. نا گفته نمونه که علاوه بر این کنترل، یه کنترل دیگه به نام TextInputLayout هم وجود داره که من باهاش کار کردم.
واسه تعریف این کنترل ها، باید کتابخونه support Design که در حال حاضر ورژن 22.2.0 اون عرضه شده رو به محیط توسعه تون اظافه کنید. ضمنا، این کتابخونه برای api ورژن 22 قابل استفاده است.
از اونجایی که من از اندروید استودیو استفاده می کنم، باید در build.gradle قسمت app، کد زیر رو در dependencies وارد کنید که کتابخونه اضافه بشه:
compile 'com.android.support.design:22.2.0'
پس از انجام مراحل بالا (که قبل از اون حتما api22 رو به محیط توسعه تون اضافه کردین)، لایه xmlتون بشید که کنترل ها رو تعریف کنیم:
از اونجایی که FloatingActionButton روی تمام کنترل ها میشینه، باید به جای LinearLayout از RelativeLayout استفاده کنید. پس LinearLayout اصلی رو به RelativeLayout تغییر بدین.
اگه هم نمی خواید از RelativeLayout استفاده کنید(به دلیل اینکه کنترل ها بهم میریزن)، می تونید به جای تغییر LinearLayout، از CoordinatorLayout داخل LinearLayout اصلی تون استفاده کنید.
CoordinatorLayout یک لایه از نوع FrameLayout اما با قابلیت های بیشتر هستش که در کتابخونه Design قرار داره.
خب، در فایل xml تون و داخل LinearLayout، یک CoordinatorLayout تعریف می کنیم و داخل اون، یک FloatingActionButton.
به این شکل:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity"
android:padding="16dp"
android:orientation="vertical"
android:background="#fff">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/root_coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.FloatingActionButton
android:id="@+id/floatBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:src="@drawable/ic_add_black"
app:borderWidth="0dp"
app:fabSize="normal"
android:layout_gravity="start|bottom" />
</android.support.design.widget.CoordinatorLayout>
</LinearLayout>
تعریف این دکمه هم توی سورس کد، دقیقا مثل کنترل های دیگس.
کنترل بعدی، TextInputLayout هست. یک کنترل بسیار جالب و کاربردی برای EditText. این کنترل، وضعیت EditText ما رو نمایش میده. چطور؟ این کنترل، یک لایه هست که EditText داخلش قرار میگیره. وقتی که کاربر روی EditText کلیک می کنه، به صورت خودکار hint اون با یک انیمیشن، در بالای EditText قرار میگیره. علاوه بر اون، می تونید پیغام های ناشی از خالی بودن EditText و یا مقدار اشتباه رو با دستور setError به جای Toast به کاربر نمایش بدین. مثل تصویر زیر:
تعریفش بسیار سادس:
<android.support.design.widget.TextInputLayout
android:id="@+id/password_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:gravity="end"
android:layout_below="@+id/email_layout">
<EditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:hint="رمز عبور"
android:layout_gravity="end"
android:gravity="end"
android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>
hint که به صورت خودکار میره بالا. واسه نمایش Error در زیر EditText، بعد از تعریف TextInputLayout در سورستون، میاید اون رو به شکل زیر setError می کنید:
inputLayout.setError("لطفا رمز عبور را وارد نماید");
به همین سادگی. سوالی بود در خدمتتون هستم
من هنگام کار با TextInputLayout به یه مشکل عجیب خوردم،با وجودی که همه REQUEST FOCUS ها رو از کد حذف کردم بازم هنگام اجرای برنامه رو EDIT TEXT که خاصیت INPUT LAYOUT برابر MULTI LINE TEXT هست فوکوس میکنه!هرکار تو کد بوده کردم (از clear focus تا فوکوس رو بقیه لایه ها ولی هیچ اتفاقی نمیفته !!!!!)اگه کسی با این مشکل برخورد کرده لظفا کمکم کنه
برای اینکه به صورت پیش فرض در حالت Focus قرار نگیره این رو بالای TextInputLayout اضافه کنید ( بالای هر کدوم نه ، فقط بالای اولی )
<LinearLayout
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="0px"
android:layout_height="0px"/>
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .