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


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.