5

我想更改我在 MaiActivity 中使用的片段的宽度?但我找不到它LayoutParams来改变它的默认宽度:

public class MainActivity extends Activity {

    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        int widthFfragment = 300;

        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        widthTot = size.x;
        heightTot = size.y;

        findViewById(R.id.f1).getLayoutParams().width = widthTot-widthFfragment;
    }
}

这是我的片段代码:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/f1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#330000"
    android:gravity="center_horizontal|center_vertical"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Fragment 1"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

片段1.java

public class Fragment1 extends Fragment{

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


        //---Inflate the layout for this fragment---
        return inflater.inflate( R.layout.fragment1, container, false);
    }
}

非常感谢。

4

2 回答 2

12

您可以通过使用从 Fragment.getView() 获得的 View 的 LayoutParams 实例来实现。我的示例代码:

private void resizeFragment(Fragment f, int newWidth, int newHeight) {
    if (f != null) {
        View view = f.getView();
        RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(newWidth, newHeight);
        view.setLayoutParams(p);
        view.requestLayout();       


    }
}

并且可以如下使用:

resizeFragment(myFragment, 200, 500);
resizeFragment(otherFragment, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
于 2014-05-07T15:06:09.023 回答
4

您的权利,Fragment 没有 LayoutParams 因为它是一个概念容器,您要么需要调整片段中膨胀视图的布局参数,要么调整将片段附加到的容器。

public class Fragment1 extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    ViewGroup view = (ViewGroup) inflater.inflate( R.layout.fragment1, container, false);

    // TODO Adjust layout params of inflated view here

    return view;
}

该示例假设您正在对 ViewGroup 进行膨胀。

希望有帮助。

于 2012-05-22T10:21:08.523 回答