这两个是否相同?
一个。
my_custom_view.xml
<?xml version="1.0" encoding="utf-8"?>
<com.abc.views.MyCustomView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
MyCustomView.java
public class MyCustomView extends LinearLayout {
public MyCustomView(Context context) {
super(context);
init();
}
public static MyCustomView inflate(ViewGroup parent) {
MyCustomView view = (MyCustomView) LayoutInflater.
from(parent.getContext()).inflate(R.layout.my_custom_view, parent, false);
return view;
}
乙
MyCustomView.java
public class MyCustomView extends LinearLayout {
public MyCustomView(Context context) {
super(context);
init();
}
public static MyCustomView inflate(ViewGroup parent) {
MyCustomView view = new MyCustomView(parent.getContext());
parent.addChild(view);
return view;
}
当我们跑步时,
MyCustomView.inflate(parent);
答案 0 :(得分:2)
不完全是。长话短说,这里的差异在实例A中,LayoutParams将被设置为&#34; MATCH_PARENT&#34;对于宽度和&#34; WRAP_CONTENT&#34;为了高度。在实例B中,LayoutParams将是父视图应用的默认值(宽度和高度通常为WRAP_CONTENT)。
此外,在实例A中,视图未附加到父视图。在实例B中,视图附加到父视图。
长篇故事,其他不同之处。
public static MyCustomView inflate(ViewGroup parent) {
MyCustomView view = (MyCustomView) LayoutInflater.
from(parent.getContext()).inflate(R.layout.my_custom_view, parent, false);
return view;
}
这做了一些事情:
FrameLayout.LayoutParams
。如果是LinearLayout,那么
LayoutParams将是LinearLayout.LayoutParams
。布局
参数由xml&#34; layout_width&#34;分配。和
&#34; layout_height&#34 ;.在这种特殊情况下,宽度设置为MATCH_PARENT
,高度设置为WRAP_CONTENT
(尽管父视图可以覆盖此值)。false
参数。 (true
会将视图附加到父级)。View#(Context context, AttributeSet attrs)
View#(Context context, AttributeSet attrs, int defStyleAttr)
View#(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
另一方面:
public static MyCustomView inflate(ViewGroup parent) {
MyCustomView view = new MyCustomView(parent.getContext());
parent.addChild(view);
return view;
}
WRAP_CONTENT
,但是由父视图决定哪个。{/ li>
View#(Context context)
构造函数。