2012-05-22 7 views
4

Je veux changer la largeur du fragment dans l'activité principale? est possible, parce que je ne trouve pas un "layoutparams" pour changer par défaut avec:dynamique resize fragment android

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; 

} }

ce code est fragment:

<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" /> 

Fragment1. 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); 
} 

}

grâce

Répondre

4

Votre droite, le Fragment n'a pas LayoutParams parce qu'il est un conteneur conceptuel, soit vous devez ajuster la mise en page params de la vue gonflée dans le fragment, ou le récipient que vous attachez le fragment à.

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; 
} 

L'exemple suppose que vous gonflez un ViewGroup.

Espérons que ça aide.

+0

Merci, je dois ajuster l'activité principale, est-il possible? – bill23

+0

Je le résous avec LayoutParams et définis la taille appropriée. Merci beaucoup – bill23

9

Vous pouvez le faire en utilisant l'instance LayoutParams de la vue obtenue à partir de Fragment.getView(). Mon exemple de code:

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();  


    } 
} 

et peut être utilisé comme suit:

resizeFragment(myFragment, 200, 500); 
resizeFragment(otherFragment, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);