5

如何LayoutParamsFragment 编程方式设置?

实际上:我想FragmentsLinearLayout 编程方式添加两个,我需要android:layout_weight为它们设置。我是新手FragmentFragments我不知道将两个添加到一个中是否是一个好方法Layout

对不起。我的英语不是很好。

4

2 回答 2

10
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT);
params.weight = 3.0f;
fragment.getView().setLayoutParams(params);
于 2013-04-11T01:02:10.947 回答
0

要在单个父 LinearLayout 中执行 2 个或更多片段的添加/替换/删除/附加/分离事务,我建议遵循以下基本步骤:

在您的 Fragment 类中,确保为您的 Fragment 指定 LayoutParams,将 layout_height(或水平方向的 layout_width)设置为“0”,同时将 layout_weight 设置为某个值:

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_a, container, false);
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.MATCH_PARENT);
    params.weight = 1.0f;
    FragmentManager manager = getActivity().getFragmentManager();
    FragmentA fragmentA = (FragmentA) manager.findFragmentByTag("A");
    fragmentA.getView().setLayoutParams(params);
}

在这里,我展示了单个 Fragment (FragmentA) 类的代码,但请确保在要使用的每个片段中都有相似的块。

现在,在拥有 LinearLayout 的 Activity 内部,这是一个在单个 LinearLayout 中添加此类片段的示例:

public void addA(View v) {
        FragmentA fragmentA = new FragmentA();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.add(R.id.linearLayout, fragmentA, "A");
        transaction.commit();
}

其中 linearLayout 将是我们活动布局中片段的父级。

于 2017-09-09T21:34:02.653 回答