布局和子类

时间:2014-12-11 19:38:35

标签: java android android-linearlayout subclass

(我是Android和Java的新手,所以请原谅任何不正确的措辞和术语。我尽力做到有道理)

我创建了一个名为Layout的{​​{1}}。然后在课程game_activity.xml中,在Game中,我将内容视图设置为onCreate

game_activity

我还创建了public class Game extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.game_activity); } //...code //...code } Subclass,其扩展了Container

LinearLayout

private class Container extends LinearLayout { public Container(Context context) { super(context); } //...code //...code } 中,有game_activity.xml名为LinearLayout。我希望mainLayout成为mainLayout的一部分,但我不知道如何正确实现它。 我试过这样的事情:

Container

但这种方法不起作用。如何让public class Game extends Activity { private LinearLayout mainLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.game_activity); mainLayout = (LinearLayout) findViewById(R.id.mainLayout); mainLayout = new Container(getApplicationContext()); } private class Container extends LinearLayout { public Container(Context context) { super(context); } //... code //... code } } 成为mainLayout课程的一部分?

提前致谢

2 个答案:

答案 0 :(得分:1)

您只需在现有的LinearLayouts中添加LinearLayouts即可。
因此,正如您的问题所说,您需要mainLayout LinearLayout作为Container的一部分(Linear Layout类的子类)。

您只需将容器布局添加到Xml文件中,然后以编程方式将MainLayout线性布局添加到容器布局中。

然后,为了访问Container类中内部LinearLayout的目的,您可以简单地在添加的mainLayout对象上放置一些Tag,并通过遍历Children并使用相关标记查找子布局来访问Container类。

我希望这会有所帮助。

答案 1 :(得分:1)

game_activity.xml中,您需要使用<LinearLayout></LinearLayout>代码,而不是拥有<com.YOUR_PACKAGE_NAME.Container></com.YOUR_PACKAGE_NAME.Container>代码。您可以在AndroidManifest.xml

中找到您的包裹名称

然后要在Container中获得对Game的引用,代码如下所示:

public class Game extends Activity {

    private Container mainLayout;

        @Override
        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.game_activity);

            mainLayout = (Container) findViewById(R.id.mainLayout);
    }

    private static class Container extends LinearLayout {

        public Container(Context context) {
            super(context);
        }

     //... code
     //... code
    }
}

旁注,您应该考虑将Container移动到自己的文件中。否则,你必须使它成为static类。此外,当获取对xml中布置的对象的引用时,您不必自己构造它们,因为Android将构造实例作为布局膨胀过程的一部分。

编辑:对不起,误读了这个问题。要在LinearLayout课程中设置Container,您的game_activity.xml应该是这样的:

<com.YOUR_PACKAGE_NAME.Container 
    attributes...>

    <LinearLayout
        attributes...>

        <SomeRandomView
            attributes... />

    </LinearLayout>
</com.YOUR_PACKAGE_NAME.Container>