সুতরাং আপনার build.gradle
ফাইলে এটি যুক্ত করুন:
compile 'com.android.support:design:27.1.1'
অ্যান্ড্রয়েডএক্স দ্রষ্টব্য: পুরানো সমর্থন লাইব্রেরিগুলি প্রতিস্থাপন করতে গুগল নতুন অ্যান্ড্রয়েডএক্স এক্সটেনশন লাইব্রেরি চালু করছে । অ্যান্ড্রয়েডএক্স ব্যবহার করতে, প্রথমে নিশ্চিত হয়ে নিন যে আপনি নিজের gradle.properties
ফাইলটি আপডেট করেছেন build.gradle
, সেট compileSdkVersion
করতে 28
(অথবা উচ্চতর) সেট করেছেন এবং আগেরটির পরিবর্তে নিম্নলিখিত লাইনটি ব্যবহার করুন compile
।
implementation 'com.google.android.material:material:1.0.0'
এরপরে, আপনার themes.xml
বা styles.xml
যে কোনও ক্ষেত্রে, আপনি এটি সেট করেছেন তা নিশ্চিত করুন - এটি আপনার অ্যাপ্লিকেশনটির অ্যাকসেন্ট রঙ - এবং আপনার এফএবির রঙ আপনি যদি ওভাররাইড না করেন (নীচে দেখুন):
<item name="colorAccent">@color/floating_action_button_color</item>
বিন্যাসের এক্সএমএলে:
<RelativeLayout
...
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.design.widget.FloatingActionButton
android:id="@+id/myFAB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_plus_sign"
app:elevation="4dp"
... />
</RelativeLayout>
অথবা আপনি যদি উপরে অ্যান্ড্রয়েডএক্স ম্যাটেরিয়াল লাইব্রেরি ব্যবহার করছেন তবে আপনি পরিবর্তে এটি ব্যবহার করতে পারবেন:
<RelativeLayout
...
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/myFAB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:srcCompat="@drawable/ic_plus_sign"
app:elevation="4dp"
... />
</RelativeLayout>
আপনি ডক্সে আরও বিকল্প দেখতে পারেন (এখানে উপাদানীয় ডক্স) ( setRippleColor
ইত্যাদি) তবে নোটের একটি হ'ল:
app:fabSize="mini"
আর একটি আকর্ষণীয় - কেবলমাত্র একটি এফএবির পটভূমি রঙ পরিবর্তন করতে, যুক্ত করুন:
app:backgroundTint="#FF0000"
(উদাহরণস্বরূপ এটিকে লাল রূপে পরিবর্তন করতে) উপরের এক্সএমএল এ প্রবেশ করুন।
যাইহোক, কোডে, ক্রিয়াকলাপ / খণ্ডের ভিউ স্ফীত হওয়ার পরে ...
FloatingActionButton myFab = (FloatingActionButton) myView.findViewById(R.id.myFAB);
myFab.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
doMyThing();
}
});
পর্যবেক্ষণ:
- যদি আপনার কাছে এমন একটি বাটন থাকে যা "সীম" এর দুটি দৃষ্টিভঙ্গি বিভক্ত করে (উদাহরণস্বরূপ, রিলেটিভলআউট ব্যবহার করে), বলুন, সীমানাকে অতিক্রম করতে একটি নেতিবাচক নীচের বিন্যাসের মার্জিন রয়েছে, আপনি একটি সমস্যা লক্ষ্য করবেন: এফএবির আকার আসলে ললিপপ বনাম প্রি-লোলিপপটিতে খুব আলাদা । আপনি এএস এর ভিজ্যুয়াল লেআউট এডিটরটিতে এটি দেখতে পারবেন যখন আপনি এপিআই-এর মধ্যে ফ্লিপ করেন suddenly হঠাৎ যখন আপনি প্রাক-ললিপপে স্যুইচ করেন তখন এটি "ফুসফুস করে"। অতিরিক্ত আকারের কারণ বলে মনে হয় যে ছায়াটি প্রতিটি দিকের দৃশ্যের আকারকে প্রসারিত করে। সুতরাং আপনি যখন এফএবির মার্জিনগুলি অন্যান্য স্টাফের কাছাকাছি রাখেন তখন এটির জন্য আপনাকে অ্যাকাউন্ট করতে হবে।
প্যাডিং খুব বেশি হলে অপসারণ বা পরিবর্তন করার একটি উপায় এখানে রয়েছে:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
RelativeLayout.LayoutParams p = (RelativeLayout.LayoutParams) myFab.getLayoutParams();
p.setMargins(0, 0, 0, 0); // get rid of margins since shadow area is now the margin
myFab.setLayoutParams(p);
}
এছাড়াও, আমি প্রোগ্রামের ভিত্তিতে এফএবির উচ্চতা ধরে রেখে, দুটি দ্বারা বিভক্ত করে, এবং মার্জিন অফসেট হিসাবে ব্যবহার করে একটি রিলেটিভ লাইআউটে দুটি অঞ্চলের মধ্যে "সীম" এ এফএবি স্থাপন করতে যাচ্ছিলাম। তবে myFab.getHeight () শূন্য ফিরে এসেছে, ভিউ স্ফীত হওয়ার পরেও মনে হয়েছিল। পরিবর্তে আমি উচ্চতাটি তৈরি করার পরে কেবল অবস্থানটি সেট করার পরে একটি ViewTreeObserver ব্যবহার করেছি then এই টিপটি
এখানে দেখুন । দেখে মনে হচ্ছে:
ViewTreeObserver viewTreeObserver = closeButton.getViewTreeObserver();
if (viewTreeObserver.isAlive()) {
viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
closeButton.getViewTreeObserver().removeGlobalOnLayoutListener(this);
} else {
closeButton.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
// not sure the above is equivalent, but that's beside the point for this example...
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) closeButton.getLayoutParams();
params.setMargins(0, 0, 16, -closeButton.getHeight() / 2); // (int left, int top, int right, int bottom)
closeButton.setLayoutParams(params);
}
});
}
এটি করার সঠিক উপায় এটি নিশ্চিত নয় তবে এটি কাজ করে বলে মনে হচ্ছে।
- দেখে মনে হচ্ছে আপনি উচ্চতা হ্রাস করে বোতামের ছায়া-স্থানটিকে ছোট করতে পারেন।
আপনি যদি কোনও "সিমে" এফএবি চান তবে আপনি ব্যবহার করতে পারেন layout_anchor
এবং layout_anchorGravity
এখানে একটি উদাহরণ রয়েছে:
<android.support.design.widget.FloatingActionButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
app:layout_anchor="@id/appbar"
app:layout_anchorGravity="bottom|right|end"
android:src="@drawable/ic_discuss"
android:layout_margin="@dimen/fab_margin"
android:clickable="true"/>
মনে রাখবেন যে কোনও স্নেকবার যখন কোনও সমন্বয়কারী লেআউটে মুড়ে আপনার কাছে চলে আসে তখন আপনি স্বয়ংক্রিয়ভাবে বোতামটি ছাড়তে পারেন you ।
আরও: