Java 如何以编程方式调用Android布局(XML)?

Java 如何以编程方式调用Android布局(XML)?,java,android,xml,android-layout,unity3d,Java,Android,Xml,Android Layout,Unity3d,我想在函数中以编程方式调用Android布局(XML)。 布局已在XML中创建。我问这个问题是因为我不想在Android原生应用程序中使用它,实际上我将在游戏引擎Unity3D中调用这些布局。假设我有一个布局。例如,请看下面的代码: 我将直接使用Unity3D类,如下所示: public class MainActivity extends UnityPlayerActivity { } 所以我需要在那个类中调用我的布局,但是以函数的形式。例如: public class MainActi

我想在函数中以编程方式调用Android布局(XML)。 布局已在XML中创建。我问这个问题是因为我不想在Android原生应用程序中使用它,实际上我将在游戏引擎Unity3D中调用这些布局。假设我有一个布局。例如,请看下面的代码:

我将直接使用Unity3D类,如下所示:

public class MainActivity extends UnityPlayerActivity {

}
所以我需要在那个类中调用我的布局,但是以函数的形式。例如:

public class MainActivity extends UnityPlayerActivity {

        public void ShowLayout(){
             enter code here
        }
}
所以我需要你们帮助解决这个问题


任何帮助都将不胜感激。

在不使用XML的情况下定义视图/布局。在您的情况下,可以在
ShowLayout()
方法中定义它。此代码应为您指明正确的方向:

    LinearLayout layout = new LinearLayout(getContext());
    layout.setWeightSum(1);
    LinearLayout childLayout = new LinearLayout(getContext());
    LinearLayout.LayoutParams childParams = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 0.8f);
    childLayout.setLayoutParams(childParams);

    LinearLayout.LayoutParams fieldParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    TextView name = new TextView(getContext());
    name.setLayoutParams(fieldParams);
    TextView value = new TextView(getContext());
    name.setLayoutParams(fieldParams);

    LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 0.2f);
    ImageButton call = new ImageButton(getContext());
    call.setLayoutParams(buttonParams);
    call.setImageResource(getResources().getDrawable(R.id.call));

定义视图/布局,而不使用XML。在您的情况下,可以在
ShowLayout()
方法中定义它。此代码应为您指明正确的方向:

    LinearLayout layout = new LinearLayout(getContext());
    layout.setWeightSum(1);
    LinearLayout childLayout = new LinearLayout(getContext());
    LinearLayout.LayoutParams childParams = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 0.8f);
    childLayout.setLayoutParams(childParams);

    LinearLayout.LayoutParams fieldParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    TextView name = new TextView(getContext());
    name.setLayoutParams(fieldParams);
    TextView value = new TextView(getContext());
    name.setLayoutParams(fieldParams);

    LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 0.2f);
    ImageButton call = new ImageButton(getContext());
    call.setLayoutParams(buttonParams);
    call.setImageResource(getResources().getDrawable(R.id.call));

使用
充气机
进行布局,然后将其放在前面

LayoutInflater inflater = LayoutInflater.from(context);
View yourView = inflater.inflate(R.layout.popup_layout, null, false);

// then bring it to front
yourView.bringToFront();

使用
充气机
进行布局,然后将其放在前面

LayoutInflater inflater = LayoutInflater.from(context);
View yourView = inflater.inflate(R.layout.popup_layout, null, false);

// then bring it to front
yourView.bringToFront();

您正在寻找LayoutInflater()?@innoSPG我与LayoutInflater进行了检查,但它不起作用。@innoSPG请查看此链接,因为这是我正在寻找的。()@Mediasoft是否希望以编程方式创建此布局。@Vishwa不,我不希望以编程方式创建布局。我使用XML创建的布局,我需要在函数中调用它。正如你们读到的上述描述,我不会在Android原生应用程序中使用。我将在使用Unity3d引擎的游戏中使用。所以在那个游戏中,我需要调用本机布局。你在找LayoutInflater()?@innoSPG我检查了LayoutInflater,但它不起作用。@innoSPG请查看此链接,因为这是我要找的。()@Mediasoft是否希望以编程方式创建此布局。@Vishwa不,我不希望以编程方式创建布局。我使用XML创建的布局,我需要在函数中调用它。正如你们读到的上述描述,我不会在Android原生应用程序中使用。我将在使用Unity3d引擎的游戏中使用。因此,从那个游戏中,我需要调用本机布局。@Joakim是的,我知道这种方法,但问题是如果我想创建复杂的布局,那么使用编程方式绘制将非常困难。因此,使用XML创建非常简单。啊,当然。你看过这个帖子吗。特别是关于
View rootView=findviewbyd(android.R.id.content)的部分
其中
content
将是您在根线性布局上设置的id?@Joakim实际上情况正好相反。他们关心将Unity3d调用到Android中,但就我而言,我需要将Android调用到Unity3d中。那有什么不同呢?我想我对这方面的了解还不够,无法帮助你。对我来说也一样。@Joakim是的,我知道这种方法,但问题是如果我想创建复杂的布局,那么用编程方式绘制就非常困难。所以用XML创建很容易。啊,当然。你看过这个帖子吗。特别是关于
View rootView=findviewbyd(android.R.id.content)的部分
其中
content
将是您在根线性布局上设置的id?@Joakim实际上情况正好相反。他们关心将Unity3d调用到Android中,但就我而言,我需要将Android调用到Unity3d中。那有什么不同呢?我想我对这方面的了解还不够,无法帮助你。在我看来是一样的。