这里的问题我在这两种情况下得不到相同的输出视图结果,我想修复案例1以获得与案例2相同的输出结果:
案例1的代码和输出:
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</LinearLayout>
text_view.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:textColor="#000000"
android:text="1"
android:textSize="20sp"
android:background="#AAAAAA"
android:gravity="center"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginTop="2dp"
android:layout_marginRight="2dp"
/>
LayoutTestActivity.java中的onCreate方法
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout lt = (LinearLayout) getLayoutInflater().inflate(R.layout.main, null);
TextView tv = (TextView) getLayoutInflater().inflate(R.layout.text_view, null);
lt.addView(tv);
setContentView(lt);
}
输出视图(不正确)
案例2的代码和输出:
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:textColor="#000000"
android:text="1"
android:textSize="20sp"
android:background="#AAAAAA"
android:gravity="center"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginTop="2dp"
android:layout_marginRight="2dp"
/>
</LinearLayout>
LayoutTestActivity.java中的onCreate方法
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
输出视图(正确)
答案 0 :(得分:14)
我不确定它是否有任何区别 - 但我的建议是:
在android:id="@+id/linearLayout"
中为LinearLayout
提供main.xml
- 代码。
然后这样做:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout lt = (LinearLayout) findViewById( R.id.linearLayout );
TextView tv = (TextView) getLayoutInflater().inflate(R.layout.text_view, null);
lt.addView(tv);
}
您可能还想测试在null
充气时,提供LinearLayout lt
或TextView
作为第二个参数之间是否存在差异,例如:
TextView tv = (TextView) getLayoutInflater().inflate(R.layout.text_view, lt);
答案 1 :(得分:0)
您必须在第一种情况下设置LayoutParams。在第二个中,这是自动完成的,因为TextView在xml中。希望这有帮助!
答案 2 :(得分:0)
我认为首先你必须直接在setContentView()方法中设置主要布局,然后再进行膨胀。
setContentView(R.layout.main);
LinearLayout mainLayout = (Linearlayout) findViewbyId(R.id.mainLayoutId);
TextView tv = (TextView) getLayoutInflater().inflate(R.layout.text_view, mainLayout, false);
mainLayout.addView(tv);
我认为这应该有效。 要保留xml布局参数,必须将最后两个参数传递给inflate()方法。