Android 以编程方式扩展TextView和LinearLayout

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

这里的问题是,在这两种情况下,我没有得到相同的输出视图结果,我想修复情况1,以获得与情况2相同的输出结果:

  • 展开textview和linearlayout,然后以编程方式将textview添加到linearlayout
  • 将textview添加到xml中的linearlayout
  • 案例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>
    
    <?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);