2012-09-01 45 views
3

如何設置LayoutParamsFragment以編程方式我可以通過編程將LayoutParams設置爲片段

其實我想添加兩個FragmentsLinearLayout編程,我需要設置android:layout_weight他們。我是Fragment的新手。我不知道這是不是一個好方法,或者不加FragmentsLayout

對不起。我的英語不太好。

+0

http://stackoverflow.com/questions/5159982/how-do-i-add-a-fragment-to-an-activity-with-a-programmatically-created-content-v – bigstones

+0

感謝bigstones。經過時間的努力。我決定使用layout_weight設置固定片段佈局寬度。但是,無論如何,再次感謝 – kdtphdav

回答

9
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT); 
params.weight = 3.0f; 
fragment.getView().setLayoutParams(params); 
0

要進行添加/替換/刪除/安裝/拆卸一個單親的LinearLayout我建議遵循以下基本步驟中的2個或多個片段的交易:

您的片段類中,請確保您指定的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); 
} 

在這裏,我展示了一個片段的代碼(FragmentA)類,但要確保你有simi在你要使用的每個片段裏面放上一些塊。

而現在,活動,你有你的LinearLayout裏面,這裏是添加單個的LinearLayout內這些片段的例子:

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

哪裏的LinearLayout將是我們的活動佈局內的片段父。

相關問題