অ্যান্ড্রয়েড সম্পর্কিত


139

আমার এর মতো একটি রিলেটিভ লেআউট রয়েছে :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dip">

    <Button
        android:id="@+id/negativeButton"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:textSize="20dip"
        android:textColor="#ffffff"
        android:layout_alignParentLeft="true"
        android:background="@drawable/black_menu_button"
        android:layout_marginLeft="5dip"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"/> 

    <Button
        android:id="@+id/positiveButton"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:textSize="20dip"
        android:textColor="#ffffff"
        android:layout_alignParentRight="true"
        android:background="@drawable/blue_menu_button"
        android:layout_marginRight="5dip"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"/>
</RelativeLayout>

আমি positiveButtonএকইভাবে প্রভাবের জন্য অগ্রগতিতে সেট করতে সক্ষম হতে চাই :

android:layout_centerInParent="true"

আমি কীভাবে এটি অগ্রগতিমূলক করতে পারি?

উত্তর:


401

সম্পূর্ণরূপে অনির্ধারিত, তবে এটি কাজ করা উচিত :

View positiveButton = findViewById(R.id.positiveButton);
RelativeLayout.LayoutParams layoutParams = 
    (RelativeLayout.LayoutParams)positiveButton.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
positiveButton.setLayoutParams(layoutParams);

android:configChanges="orientation|screenSize"আপনার প্রকাশ্যে আপনার ক্রিয়াকলাপের ভিতরে যুক্ত করুন inside


5
এটি কাজ করেছে, তবে কেবলমাত্র আমি লেআউটপ্যারামসএডডিআরুল (সম্পর্কিত সম্পর্কিত লেআউট.এলআইজিএন_পিআরআইআরআইআরটি, 0) ইন্ডারেট করার পরে; পিতামাতার নিয়মে কেন্দ্রের আগে। ধন্যবাদ.
— আলিন

9
আমি এটি যুক্ত করতে চাই যে এটি আমার জন্যও কাজ করেছিল, তবে আমাকে লেআউটপ্যারামস.এডিডরুল (রিলেটেটিভ লেআউট.সেন্ট .২০১১), ০) পরিবর্তন করতে হয়েছিল; লেআউটপ্যারামস.এডিডিআরলে (আপেক্ষিক লেআউট.সেন্ট .১১: 2001), -১); আমার পরিস্থিতিতে আপনার অ্যাপ্লিকেশনটির "অ্যাঙ্কর" ক্ষেত্রে আলাদা মান প্রয়োজন হতে পারে।
— বেন ম্যাক

7
অ্যাঙ্কর ক্ষেত্রের মান বর্তমানে 0 টির চেয়ে বেশি কিছু হতে পারে sign উত্সটির তুলনা রয়েছে if (rules[CENTER_IN_PARENT] != 0 || rules[CENTER_HORIZONTAL] != 0) {যেখানে 0কার্যকরভাবে মূল্যায়ন করা হয়false
— ডোরি

2
ফলো-আপ প্রশ্ন হিসাবে কেউ কি জানেন যে এই উত্তরের কোডটি অ্যানিমেশনগুলিতে ব্যবহার করা যেতে পারে? উদাহরণস্বরূপ যেমন কোনও আপেক্ষিক বাম অফসেট থেকে কোনও কেন্দ্রিক অবস্থানে নিয়ে যাওয়া ইত্যাদি
— জনি

27
আপনি কেবলমাত্র লেআউটপ্যারামস.এডিডিআরুল (রিলেটিভলআউট.সেন্টিপিটিআরপয়েন্ট) ব্যবহার করতে পারেন, দ্বিতীয় প্যারামিটারের কোনও প্রয়োজন নেই, যেহেতু আপনি ডকুমেন্টেশনটিতে
— টার্মেলপ ২

14

রূবেণ প্রতিক্রিয়া থেকে কেবল অন্য গন্ধ যুক্ত করতে, আমি একটি শর্ত অনুযায়ী এই বিধি যুক্ত করতে বা অপসারণ করতে এটি ব্যবহার করে:

    RelativeLayout.LayoutParams layoutParams =
            (RelativeLayout.LayoutParams) holder.txtGuestName.getLayoutParams();

    if (SOMETHING_THAT_WOULD_LIKE_YOU_TO_CHECK) {
        // if true center text:
        layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
        holder.txtGuestName.setLayoutParams(layoutParams);
    } else {
        // if false remove center:
        layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, 0);
        holder.txtGuestName.setLayoutParams(layoutParams);
    }

3
কোনও নিয়ম সরানোর সর্বোত্তম উপায় হ'ল: লেআউটপ্যারামস.রিমোভরুল (রিলেটেটিভ লেআউট C CENTER_IN_PARENT);
— জাহিদ রাশেদ

5

আমি করেছি

1. কেন্দ্রপরিচয়

2. কেন্দ্রহরাইজেন্টাল

3. কেন্দ্রভেরিকাল

সঙ্গে সত্য এবং মিথ্যা ।

private void addOrRemoveProperty(View view, int property, boolean flag){
    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
    if(flag){
        layoutParams.addRule(property);
    }else {
        layoutParams.removeRule(property);
    }
    view.setLayoutParams(layoutParams);
}

পদ্ধতিটি কীভাবে কল করবেন:

কেন্দ্রপরিচয় - সত্য

addOrRemoveProperty(mView, RelativeLayout.CENTER_IN_PARENT, true);

কেন্দ্রপরিচয় - মিথ্যা

addOrRemoveProperty(mView, RelativeLayout.CENTER_IN_PARENT, false);

কেন্দ্রহরাইজেন্টাল - সত্য

addOrRemoveProperty(mView, RelativeLayout.CENTER_HORIZONTAL, true);

কেন্দ্রহরাইজেন্টাল - মিথ্যা

addOrRemoveProperty(mView, RelativeLayout.CENTER_HORIZONTAL, false);

কেন্দ্রের ভার্টিকাল - সত্য

addOrRemoveProperty(mView, RelativeLayout.CENTER_VERTICAL, true);

কেন্দ্রভেরিক্যাল - মিথ্যা

addOrRemoveProperty(mView, RelativeLayout.CENTER_VERTICAL, false);

আশা করি এটি আপনাকে সহায়তা করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.