Android 以编程方式扩展TextView和LinearLayout
这里的问题是,在这两种情况下,我没有得到相同的输出视图结果,我想修复情况1,以获得与情况2相同的输出结果:Android 以编程方式扩展TextView和LinearLayout,android,Android,这里的问题是,在这两种情况下,我没有得到相同的输出视图结果,我想修复情况1,以获得与情况2相同的输出结果: 展开textview和linearlayout,然后以编程方式将textview添加到linearlayout 将textview添加到xml中的linearlayout 案例1的代码和输出: main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schema
<?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>
<?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>
输出视图(不正确)
案例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">
</LinearLayout>
<?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>
输出视图(正确)
在第一种情况下,必须设置LayoutParams。在第二种情况下,这是自动完成的,因为TextView位于xml中。希望这有帮助 我不确定这是否有什么不同,但我的建议是: 为
main.xml
中的linearLayout
提供android:id=“@+id/linearLayout”
-标记
然后这样做:
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 tv = (TextView) getLayoutInflater().inflate(R.layout.text_view, lt);
首先,我认为您必须直接在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()方法。我认为在第一种情况下会自动进行,因为他会从设置了布局参数的xml中展开视图。Dimitris Makris,您的答案是可行的,但正如Raz所说,应该自动进行。我希望有另一个解决办法。谢谢你们两位。我尝试了你们的解决方案,但它没有给出与案例2相同的输出。谢谢你的尝试。试着在to布局中发布不同的图片-这可能会揭示问题所在。我按照你的要求发布了图片,希望这会有所帮助。谢谢
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);