在按钮下方制作布局

Make the layout below button

在我的一个片段 class 中,它的顶部有两个按钮(A 和 B),用于在使用 viewPager 单击时切换到另一个片段。

当点击buttonA时,应该切换到页面A等等。

点击按钮A时,如何让A中的文字显示在两个按钮下方?

fragment_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/buttonA"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="10dp"
        android:padding="15dp"
        android:text="ButtonA"
        android:textSize="12sp" />


    <Button
        android:id="@+id/buttonB"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="10dp"
        android:layout_marginRight="15dp"
        android:layout_toRightOf="@+id/buttonB"
        android:backgroundTint="@color/materialGrey600"
        android:padding="15dp"
        android:text="ButtonB"
        android:textSize="12sp" />


    <androidx.viewpager.widget.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


</RelativeLayout>

菜单片段

public class MenuFragment extends BaseFragment {


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_menu, container, false);
        final ViewPager viewPager = (ViewPager) v.findViewById(R.id.pager);
        viewPager.setAdapter(new ViewPagerAdapter(getActivity().getFragmentManager()));

        Button btnA = (Button) v.findViewById(R.id.buttonA);
        Button btnB = (Button) v.findViewById(R.id.buttonB);

        btnA.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                viewPager.setCurrentItem(0, true);
            }
        });

        btnB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                viewPager.setCurrentItem(1, true);
            }
        });
        return v;
    }
}

ViewPagerAdapter

  public class ViewPagerAdapter extends FragmentPagerAdapter {

        public ViewPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            switch (position)
            {
                case 0:
                    return new A()
                case 1:
                    return new B()

            }
            return null; 
        }



        @Override
        public int getCount() {
            return 2; 
        }
    }

输出

由于您使用的是相对布局,因此您可以添加 layout_below

 <androidx.viewpager.widget.ViewPager
    android:layout_below="@id/buttonB"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

你做错了,你不能将按钮与其自身对齐。这就是您的按钮无法正常工作的原因。在您的按钮 B 中执行此操作:

 android:layout_toRightOf="@+id/buttonA"

而不是这个:

 android:layout_toRightOf="@+id/buttonB"

并在您的 viewPager 中添加 "android:layout_below:"

 <androidx.viewpager.widget.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/buttonA" />

试试下面的 code.hope 对你有帮助 ;) P.S。您只需要根据需要设置按钮样式:)

  <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <androidx.viewpager.widget.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_above="@id/llButton"
            android:layout_height="match_parent" />


        <LinearLayout
            android:id="@+id/llButton"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="10dp">

            <Button
                android:id="@+id/buttonA"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:padding="15dp"
                android:text="ButtonA"
                android:textSize="12sp" />


            <Button
                android:id="@+id/buttonB"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="15dp"
                android:layout_marginTop="10dp"
                android:layout_marginRight="15dp"
                android:backgroundTint="@color/colorAccent"
                android:padding="15dp"
                android:text="ButtonB"
                android:textSize="12sp" />

        </LinearLayout>


    </RelativeLayout>
You have to set your layout like this....

[I think you want something like this 2 button fisrt and then viewpager for change the content ][1]


  [1]: https://i.stack.imgur.com/dluXA.png

**Code for main Page **


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:padding="5dp"
    android:layout_height="match_parent">


    <LinearLayout
        android:layout_width="match_parent"
        android:padding="10dp"
        android:layout_marginTop="10dp"
        android:layout_height="match_parent"
        android:orientation="horizontal">


        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/frame_content">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_gravity="center_horizontal">

                <Button
                    android:id="@+id/btn_donner"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="2"
                    android:background="@drawable/rect_outline"
                    android:text="Donor's"
                    android:textAlignment="center"
                    android:textColor="@color/white" />

                <Button
                    android:id="@+id/btn_blood_bank"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Blood Bank"
                    android:background="@drawable/rect_outline"
                    android:layout_weight="2"
                    android:textAlignment="gravity"
                    android:textColor="@color/white" />
            </LinearLayout>
        </FrameLayout>
    </LinearLayout>
</LinearLayout>


Code For Java File of two Buttons And ViewPager


      //Click Event for donor's and blood bank .....
        View.OnClickListener listener = new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Fragment fragment = null;
                if (view == view.findViewById(R.id.btn_donner))
                {
                    fragment = new TabDonnerFragment();
                }
                else
                {
                    fragment = new TabBloodBankFragment();
                }
                FragmentManager manager = getFragmentManager();
                FragmentTransaction transaction = manager.beginTransaction();
                transaction.replace(R.id.frame_content, fragment);
                transaction.commit();
            }
        };
        btn_donner.setOnClickListener(listener);
        btn_blood_bank.setOnClickListener(listener);

        return root;
    }


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        Fragment fragment = null;
        fragment = new TabDonnerFragment();
        FragmentManager manager = getFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
        transaction.replace(R.id.frame_content, fragment);
        transaction.commit();
    }
}