你如何一遍又一遍地重复使用相同的按钮,但使用不同的 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 自定义按钮,例如:MyReuseButton
是 MaterialButton
的子类,如下所示:
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
我试过使用 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 自定义按钮,例如:MyReuseButton
是 MaterialButton
的子类,如下所示:
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