android - 在 onCreate() 中生成 main.xml

标签 android android-layout

是否可以在 onCreate() 中生成一个 main.xml?如:

package avm.project;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.lang.reflect.Field;

import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ViewFlipper;


public class AVMOrderSystemActivity extends Activity { 
      ViewFlipper flipper;


      @Override 
      public void onCreate(Bundle icicle) { 
        super.onCreate(icicle);

        //File[] listOfFiles = folder.listFiles();

        /*for (int i = 0; i < listOfFiles.length; i++) {
            if (listOfFiles[i].isFile()) {
                Log.i("XML Generator","File " + listOfFiles[i].getName());
            } else if (listOfFiles[i].isDirectory()) {
                Log.i("XML Generator","Directory " + listOfFiles[i].getName());
            }
        }*/
        String xml="";
        xml=xml+"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";

        xml=xml+"<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n"+
                "android:layout_width=\"fill_parent\" android:layout_height=\"wrap_content\"\n"+
                "android:orientation=\"horizontal\" android:padding= \"5px\">\n";
        xml=xml+"<ViewFlipper android:id=\"@+id/adflipper\"\n"+
                "android:inAnimation=\"@android:anim/fade_in\" android:outAnimation=\"@android:anim/slide_out_right\"\n"+
                "android:paddingLeft=\"15px\" android:layout_width=\"fill_parent\"\n"+
                "android:layout_height=\"fill_parent\" android:autoStart=\"true\"\n"+
                "android:flipInterval=\"5000\">";

        Resources a=this.getResources();
        try
        {
            for (int i=0x7f020000 ;i<0x7f020020;i++)
            {
                String name=a.getResourceName(i);
                xml=xml+"<ImageView android:layout_width=\"fill_parent\" android:src=\"@"+name.substring(name.indexOf(':')+1)+"\"\n"+
                    "android:layout_height=\"fill_parent\"></ImageView>\n";
            }
        }
        catch(Exception e)
        {
            Log.i("resoruces","exception");
            e.printStackTrace();
        }
        xml=xml+"</ViewFlipper>\n</RelativeLayout>";
        xml=xml+"<!--xxx-->";


        try{
            // Create file 
            FileWriter fstream = new FileWriter("res/layout/main.xml");
            BufferedWriter out = new BufferedWriter(fstream);
            out.write(xml);
            //Close the output stream
            out.close();
        }catch (Exception e){//Catch exception if any
            Log.i("xml write","exception");
            e.printStackTrace();
        }

        setContentView(R.layout.main); 

        flipper=(ViewFlipper)findViewById(R.id.adflipper); 
        Button btn=(Button)findViewById(R.id.restbutton);


        btn.setOnClickListener(new View.OnClickListener() { 
          public void onClick(View view) { 
            flipper.showNext();
          } 
        }); 
      } 
    }

我已经实现了代码,它可以让项目可绘制对象相应地生成一个 main.xml,但是它不起作用(我得到一个异常:找不到文件 res/layout/main.xml)。 (我的目标是根据不同数量的 png 图像生成 main.xml)我做错了什么,是否有可能克服这个问题或者是否有其他解决方案?

谢谢。

最佳答案

您可以动态更改 ImageView 的 src 而无需生成 XML。

ImageView imageView = (ImageView) findViewById(R.id.your_image_view);
imageView.setImageDrawable(getResources().getDrawable(R.drawable.your_png));

您可以通过动态创建它们并将它们添加到父 RelativeLayout 来添加更多内容:

for (int i=0x7f020000 ;i<0x7f020020;i++)
    ImageView imageView = new ImageView(this);
    imageview.setBackgroundResource(R.drawable.your_png_reference);
    RelativeLayout ll = (RelativeLayout) findViewById(R.id.your_relative_layout_id);
    ll.addView(imageView);
}

关于android - 在 onCreate() 中生成 main.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6767746/

相关文章:

java - Android SignalR java 客户端 : Not receiving all the SignalR messages on the HubConnection

Android:当 wal 存在时执行数据更新后复制 db 文件不起作用

java - 无法访问 ListView 内的 TextView

java - Android - 确定 Compass 中的内存泄漏 (SensorManager)

android - 为什么动态添加的小部件不显示?

android - ConstraintLayout 与 "Traditional"布局

android - 使用起始值开始新 Activity

android - 如何在相对布局中水平居中按钮?

android - edittext 必须在不移动其他 View 的情况下在键盘顶部向上移动

android - DDMS View 文件资源管理器中的数据目录