我可以将视图转换为布局吗?

时间:2017-12-09 13:54:34

标签: java android android-layout view

在android中,可以为Layout文件充气,并获得View作为回报。 例如:

LayoutInflater layoutInflater = LayoutInflater.from(context);
View myView = layoutInflater.inflate(R.layout.example_layout, null);

但是如果我能从那个现在是Layout的夸张布局中得到View,我就会尝试? 我可以从膨胀的Layout中找回原来的View

2 个答案:

答案 0 :(得分:1)

LayoutInflater layoutInflater = LayoutInflater.from(context);
LinearLayout myView = (LinearLayout)layoutInflater.inflate(R.layout.example_layout, null);

就是这样!

请确保layout.example_layout中的根视图是LinearLayout或您想要的任何布局。否则你将有一个ClassCastException

每个布局或ViewGroup扩展View,这就是inflate方法返回视图的原因,然后由您执行正确的转换。

答案 1 :(得分:0)

考虑下面的布局。它只有一个文本视图。

 <TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="@dimen/mediumTextSize"
    android:textColor="@color/black_text_color"
    />

充气后你可以直接将textView作为布局中唯一包含的视图。

 LayoutInflater inflater=LayoutInflater.from(this);
    TextView view=(TextView)inflater.inflate(R.layout.temp,null);

现在考虑下面的布局。

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/txtName"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:textColor="@color/black_text_color"
        android:textSize="@dimen/largeTExtSize" />

    <TextView
        android:id="@+id/csvName"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:textColor="@color/black_text_color"
        android:textSize="@dimen/largeTExtSize" />

</LinearLayout>

关于通货膨胀。

 LayoutInflater inflater=LayoutInflater.from(this);
    View view=inflater.inflate(R.layout.temp,null);
    //Or you can do
    // LinearLayout view=(LinearLayout)inflater.inflate(R.layout.temp,null);
    TextView txt=view.findViewById(R.id.txtId);