在android中,可以为Layout
文件充气,并获得View
作为回报。
例如:
LayoutInflater layoutInflater = LayoutInflater.from(context);
View myView = layoutInflater.inflate(R.layout.example_layout, null);
但是如果我能从那个现在是Layout
的夸张布局中得到View
,我就会尝试?
我可以从膨胀的Layout
中找回原来的View
。
答案 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);