2010-12-22 60 views
0

嘿所有, 我已经创建了一个使用Jpanels内的Jpanels的Java程序。这方面的一个例子是具有包含按钮的侧视图,按钮可以在按下时更改主视图。主视图也有可用于改变自身的按钮。布局中的Android布局,用不同的类来处理它们的输入?

我想重新在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布局,并且让它能够在该主视图中按下任何按钮时,该布局的类将处理它。

+0

我不完全理解你的问题,你想要做的是与自定义内容嵌套的意见?你还想在每个视图上单独处理设备输入事件?我真的不明白你的问题,因为只有一个视图有时间焦点... – Franco 2010-12-22 22:06:57

回答

0

如果我明白你要做什么,那么我会扩展其中一个布局类来创建我的面板类,然后将它们嵌套在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 /布局/ 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_ properties。

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

编辑:我的意思是说,虽然上面似乎绝对设定的总体布局,没有什么在运行时创建新MyMainPanel布局,并在RelativeLayout的父母交换他们代替原来的阻止你。