在Android中以编程方式实现splitView

时间:2011-12-19 06:53:05

标签: android android-layout android-fragments

我正在尝试以编程方式在Android中创建splitView。这个功能对我来说是全新的。经过一番研究,我意识到必须使用片段。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment android:name="com.example.news.ArticleListFragment"
            android:id="@+id/list"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
    <fragment android:name="com.example.news.ArticleReaderFragment"
            android:id="@+id/viewer"
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
</LinearLayout>

我想知道,LinearLayout是布局的最佳选择吗?其次是可以通过编程方式将按钮,拣货等UI部件添加到片段中吗?

2 个答案:

答案 0 :(得分:1)

如果您不想在没有片段支持的较低Android版本中使用片段布局或构建应用程序,在这种情况下,您可以通过在一个活动中调用两个单独的XML文件来获取拆分视图。只是按照左右两个要求构建两个xml。小例子

LinearLayout layoutMain = new LinearLayout(this); layoutMain.setOrientation(LinearLayout.HORIZONTAL); setContentView(layoutMain); LayoutInflater inflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); RelativeLayout layoutLeft = (RelativeLayout) inflate.inflate( R.layout.firstxml, null); RelativeLayout layoutRight = (RelativeLayout) inflate.inflate( R.layout.secondxml, null);

RelativeLayout.LayoutParams relParam = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT,
    RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutMain.addView(layoutLeft, 100, 100);
layoutMain.addView(layoutRight, relParam);

} `

答案 1 :(得分:0)

您可以将任何布局与片段一起使用,完全取决于您的要求。

是的,您可以通过编程方式将像Buttons等视图添加到Fragment中。将Fragment的布局声明为布局。

以编程方式添加视图的一个示例--- R.layout.main可以是没有子视图的LinearLayout

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
    ViewGroup mViewGroup = inflater.inflate(R.layout.main, container, false);
    Button mButton = new Button(getActivity());
    mButton.setLayoutParameters(new LinearLayout.LayoutParams(
                                 LinearLayout.LayoutParams.FILL_PARENT,
                                 LinearLayout.LayoutParams.FILL_PARENT));
    mViewGroup.add(mButton);
}