android中的覆盖布局

android中的覆盖布局,android,android-layout,Android,Android Layout,我有一个android库项目——SampleLibrary,它包含 布局文件夹中的布局文件sample_layout.xml 以及使用此布局文件sampleLayout.java的相应java文件 我也有SampleExample android项目在使用 样本库作为源 它的布局文件夹中还包含sample_layout.xml,与SampleLibrary中的sample_layout.xml相同,只是它还包含一个按钮 现在,如果我想在SampleExample项目中为这个按钮设置事件监听器。如

我有一个android库项目——SampleLibrary,它包含

  • 布局文件夹中的布局文件sample_layout.xml
  • 以及使用此布局文件sampleLayout.java的相应java文件
  • 我也有SampleExample android项目在使用

  • 样本库作为源
  • 它的布局文件夹中还包含sample_layout.xml,与SampleLibrary中的sample_layout.xml相同,只是它还包含一个按钮

  • 现在,如果我想在SampleExample项目中为这个按钮设置事件监听器。如何在不更改sampleLayout.java的情况下实现这一点?我们可以在SampleExample项目中进行更改。

    因此更改SampleExample项目中的
    sample\u layout.xml
    名称,这将是最安全的操作。

    您必须在SampleExample中重写SampleLayout.java。

    我认为您应该能够重写SampleLayout.java。 试着这样做:

    public class SampleLayout extends your.lib.SampleLayout {
    
    private Button newButton;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        ...
        newButton = (Button)findViewById(R.id.thebutton);
        newButton.setOnClickListener(this); 
    }
    
    @Override
    public void onClick(View view) {
    
        if (newButton.getId() == view.getId()) {
            // button pressed
        } else {
            super.onClick(view); 
           // library handles this
        }
    }
    

    显示您的代码以便我们可以帮助您,此示例_layout.xml用于SampleLibrary中的sampleLayout.java,因此我们无法更改名称,我无法覆盖它,因为SampleExample使用SampleLibrary作为源。由于它已经包含SampleLayout.java,重写SampleLayout.java将在SampleExample中生成SampleLayout.java的两个实例,并且project不会得到内置的,这意味着创建具有附加功能的新类。例如,
    NewSampleLayout扩展了SampleLayout
    ,那么在不更改库的情况下,无法更改库中的行为。可以使用android片段吗?