【问题标题】:Android layouts within layouts, with separate classes handling their input?布局中的 Android 布局,用单独的类处理它们的输入?
【发布时间】:2010-12-22 21:57:20
【问题描述】:

大家好, 我在 Java 中创建了一个在 Jpanels 中使用 Jpanels 的程序。这方面的一个例子是有一个包含按钮的侧视图,当按下时这些按钮会改变主视图。主视图还具有可用于更改自身的按钮。

我正在尝试在 android 上重新创建它。我的布局是从 xml 设置的,侧面板包含按钮和主视图。

在主视图中有另一个 xml 包含我想要的内容。

现在我正在努力让这个单独的 xml 显示在主视图中,并且不知道如何让类处理自己的输入。我不想将代码粘贴到 main.xml 中,因为我想保持面向对象的内容,并且每个视图都需要一些自定义元素,例如不同的文本视图。

下面是我尝试为 android 转换的示例:-

//The ViewInt class has its own layout
ViewInt tempView = new ViewInt(i, mFloorNo);
//The viewInt class is then added to the main window.
mainWindowPanel.add(tempView);

这段代码将创建一个视图,将其添加到主视图,然后主窗口中的任何输入都由该类处理,但同时任何不在此主窗口中的输入都由另一个类处理(可能是根类)。 非常感谢任何帮助,谢谢。

澄清: 该程序有一个侧面板布局,包含按钮。还有一个空的主视图布局。我正在尝试为此主视图布局设置 .xml 布局,并拥有它,以便如果在该主视图中按下任何按钮,则该布局的类将处理它。

【问题讨论】:

  • 我不完全理解你的问题,你想做的是带有自定义内容的嵌套视图吗?您还想在每个视图上分别处理设备输入事件吗?我不太明白你的问题,因为只有一个视图有焦点......
  • 也许意见是错误的词。我可能是指布局。侧面板的布局有一些按钮,主视图中的布局也有一些按钮。这些都包含在另一个布局中,即根布局,包含所有内容。主视图是可变的,所以我正在寻找一些添加/删除布局的方法。我也想为每个布局设置一个类,负责自己的布局按钮按下。

标签: android xml layout


【解决方案1】:

如果我理解您想要做什么,那么我会扩展其中一个布局类来创建我的面板类,然后简单地将它们嵌套在 main.xml 布局文件中的另一个布局(可能是 RelativeLayout)中。

public class MyPanel extends LinearLayout
    implements Button.onClickListener {
    // Do things which are common to the side & main panels in this class
}

public class MySidePanel extends MyPanel {
}

public class MyMainPanel extends MyPanel {
}

然后在res/layout/main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <com.mydomain.MySidePanel
        android:orientation="vertical"
        android:id="@+id/side_panel_layout"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent" >
        <Button
            android:id="@+id/sp_Button1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <!-- Do other button -->
    </com.mydomain.MySidePanel>
    <com.mydomain.MyMainPanel>
    <!-- main panel layout here -->
    </com.mydomain.MyMainPanel
</RelativeLayout>

在上面我显然只在侧面板中放了一个按钮,而主面板是空的,但你应该能够从中看到我的方法。您还需要添加相对布局 android:layout_ 属性。

在您的活动中,只需 setContentView(...) 并创建面板类的实例。

编辑:我的意思是,虽然上面似乎绝对设置了整体布局,但没有什么能阻止您在运行时创建新的 MyMainPanel 布局并将它们替换为 RelativeLayout 中的原始布局父母。

【讨论】:

    猜你喜欢
    • 2021-04-10
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多