0

layout BレイアウトAの上に置きたい.2つのレイアウトを結合またはマージしたい. 下の画像では、丸い緑と青のビューは同じレイアウトを共有していますが、異なるフラグメントとして作成されています。このRoundedColourFragmentクラスは拡張SherlockFragmentされ、フラグメントのlayoutサイズと形状のカスタマイズを担当します。私の問題は、two_fragmentレイアウトをレイアウトの一番上に置くことができないことtwoFragmentsです。onCreateView私はそれらに参加しようとしていましたRoundedColourFragment。レイアウトを重ねるようなものです。

ここに画像の説明を入力


         leftFrag = new RoundedColourFragment(getActivity().getResources().getColor(
                R.color.trans), 1f, MARGIN, MARGIN / 2, MARGIN, MARGIN);

         rightFrag = new RoundedColourFragment(getActivity().getResources().getColor(
                 R.color.honeycombish_blue), 2f, MARGIN / 2, MARGIN, MARGIN,
                 MARGIN);


         FragmentTransaction ft = getChildFragmentManager().beginTransaction();
         ft.add(R.id.twoFragments, leftFrag, "left");
         ft.add(R.id.twoFragments, rightFrag, "right");
         ft.addToBackStack(null);
         ft.commit();

twoFragments.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/twoFragments">
</LinearLayout>

RoundedColourFragment.java

public class RoundedColourFragment extends SherlockFragment {

    private View mView;
    private int mColour;
    private float mWeight;
    private int marginLeft, marginRight, marginTop, marginBottom;

...

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mView = new View(getActivity());

        GradientDrawable background = (GradientDrawable) getResources()
                .getDrawable(R.drawable.rounded_rect);
        background.setColor(mColour);

        mView.setBackgroundDrawable(background);
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0,
                LayoutParams.FILL_PARENT, mWeight);
        lp.setMargins(marginLeft, marginTop, marginRight, marginBottom);
        mView.setLayoutParams(lp);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

         LayoutInflater vi = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         View rootView = vi .inflate(R.layout.two_fragment, container, false);

         ((ViewGroup) rootView).addView(mView, 0, new ViewGroup.LayoutParams(
                 ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));

        return rootView;
    }

}

two_fragment.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/two_fragment" >
    <Button
        android:id="@+id/bbtnn"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />
</LinearLayout>
4

0 に答える 0