你如何一遍又一遍地重复使用相同的按钮,但使用不同的 id?

How do you reuse the same button over and over, but with a different id?

我试过使用 android 工作室文档中的 include/merge 工具,但我只能弄乱按钮的“外观”(布局参数)。 (即位置、字体大小、颜色)

我想做的是以特定顺序加载数百个布局,通过按钮控制。

例如: Button_1 在 Screen_1 带你去 Screen_2。 Screen_2 也有 Button_1,但是用一种新的方式重新打包以加载 Screen_3 布局。

AndroidStudio 是否允许您重复使用具有不同功能的相同按钮,还是我们只能覆盖视觉效果?

我脑后有个小声音告诉我,这样做会使我的应用程序太大。如果有更好的方法来获得同样的效果,而不需要每次都重新绘制新的布局。

Does Android Studio allow you to reuse the same button with different functionality, or are we stuck with overwriting the visuals only?

要在不同的屏幕中重复使用相同的按钮,同时重复使用某些按钮功能,可以通过使用自定义按钮视图来实现。

假设您想重复使用特定的 MaterialButton。

1.Create 自定义按钮,例如:MyReuseButtonMaterialButton 的子类,如下所示:

public class MyReuseButton extends MaterialButton {

    public MyReuseButton(@NonNull Context context) {
        super(context);
        init();
    }

    public MyReuseButton(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyReuseButton(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init(){
        //these are the default Button attributes
        setBackgroundColor(ContextCompat.getColor(getContext(), android.R.color.darker_gray));
        setTextColor(ContextCompat.getColor(getContext(), android.R.color.black));
        setText("My Button Default Text");
    }

    public void setButtonLogicForScreen1(){
       //do your button functionalities for Screen1 (which is also reused in case some other screen needs the same functionalities)
    }

    public void setButtonLogicForScreen2(){
       //do your button functionalities for Screen2 (which is also reused in case some other screen needs the same functionalities)
    }
}

2.You 可以使用如下不同的 ID 在您想要的每个屏幕中重复使用此按钮:

<com.my.packagename.MyReuseButton
   android:id="@+id/myButtonId1"
   android:layout_width="match_parent"
   android:layout_height="wrap_content" />

3.And 当然,您可以重复使用某些按钮功能,例如:对于屏幕 1,例如:

 MyReuseButton myReuseButton = findViewById(R.id.myButtonId1);
 myReuseButton.setButtonLogicForScreen1(); //of course this can be reused over other screens as well

或在屏幕 2 中:

MyReuseButton myReuseButton = findViewById(R.id.myButtonId2);
myReuseButton.setButtonLogicForScreen2(); //of course this can be reused over other screens as well