代码之家  ›  专栏  ›  技术社区  ›  Abderazak Amiar

将视图从MainActivity添加到另一个xml文件布局

  •  0
  • Abderazak Amiar  · 技术社区  · 6 年前

    我想将MainActivity中的ImageView添加到另一个xml文件(layout.xml)中。实际上,我已经尝试了这段代码,但没有成功,下面是MainActivity的代码源,activity\u main。xml和布局。xml:

    主要活动:

    public class MainActivity extends AppCompatActivity {
    LinearLayout linearLayout;
    ImageView imageView;
    Dialog dialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = new ImageView(this);
        linearLayout = (LinearLayout)findViewById(R.id.id_layout);
        imageView.setImageResource(R.drawable.ic_launcher_background);
        linearLayout.addView(imageView);
    
        dialog = new Dialog(this);
        dialog.setContentView(linearLayout);
        dialog.show();
    
    }}
    

    以下是主要活动的xml文件 Activity\u main。xml:

        <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="sofware.dz.test.MainActivity">
    
    
    </android.support.constraint.ConstraintLayout>
    

    以下是xml文件的代码源 布局xml:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/id_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
    </LinearLayout>
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   ckern    6 年前

    看起来你没有在膨胀 layout.xml 在任何地方

    您可以更换线路

    linearLayout = (LinearLayout)findViewById(R.id.id_layout);
    

    使用此选项:

    linearLayout = (LinearLayout)LayoutInflater.from((Context) this).inflate(R.layout.layout, null)
    

    可以在线性布局时引用膨胀视图,因为这是xml的根视图。如果有其他的根,则必须添加 findViewById(R.id.id_layout) 最后打电话。

        2
  •  1
  •   pushasha    6 年前

    如果您试图创建 Dialog 使用中定义的布局 layout.xml 作为内容视图,然后添加 ImageView 从您的活动开始,尝试以下操作:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        imageView = new ImageView(this);
        imageView.setImageResource(R.drawable.ic_launcher_background);
    
        dialog = new Dialog(this);
        dialog.setContentView(R.layout.layout); // this inflates layout.xml in the dialog
    
        LinearLayout layout = dialog.findViewById(R.id.id_layout); // grab root view from inflated layout
        layout.addView(imageView);
    
        dialog.show(); // show the dialog, which now contains the ImageView
    }
    

    工作原理,逐步:

    1. 设置活动的内容视图,您已经在这样做了: setContentView(R.layout.activity_main);

    2. 创建 图片框 您要添加(您也已经这样做了):
      imageView = new ImageView(this); imageView.setImageResource(R.drawable.ic_launcher_background);

    3. 创建对话框,并将其内容视图设置为布局的资源ID。xml布局(使其膨胀):
      dialog = new Dialog(this); dialog.setContentView(R.layout.layout); // this inflates layout.xml in the dialog

    4. 从对话框中的膨胀布局获取根视图:
      LinearLayout layout = dialog.findViewById(R.id.id_layout); // grab root view layout.addView(imageView);
    5. 将ImageView添加到根视图:
      layout.addView(imageView);