java - 当我在 Android Studio 中动态添加一个新按钮时,第一个按钮消失了
问题描述
当我在约束布局中的 Android Studio 中添加一个新按钮时,第一个按钮消失了。我认为问题在于观点。
有两个按钮会弹出一个弹出菜单,让我从其他按钮中进行选择。然后我将新按钮添加到原始按钮的位置。不幸的是,当我尝试添加第二个按钮时,第一个按钮消失了。我包括了一些截图,因为我知道这很难理解。
这是弹出菜单或和弦选择器。我选择了一个和弦,应用程序添加了它。但是当我为右侧的灰色空按钮选择另一个时,左侧的蓝色按钮消失了。它实际上在新的彩色按钮下,这很奇怪。
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.page_empty, container, false);
final ConstraintLayout mConstraintLayout = (ConstraintLayout) rootView.findViewById(R.id.constraintEmpty);
final ConstraintSet set = new ConstraintSet();
set.clone(mConstraintLayout);
final Typeface typeface = ResourcesCompat.getFont(getContext(), R.font.comfortaaregular);
final AppCompatButton empty1 = (AppCompatButton) rootView.findViewById(R.id.empty1);
empty1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(getContext(), v);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case cm7popup:
Toast.makeText(getContext(), "Cm7 Chosen", Toast.LENGTH_LONG).show();
alreadychosen=true;
final AppCompatButton cm7button = new AppCompatButton(getContext());
cm7button.setText("Cm7");
cm7button.setTextSize(18);
cm7button.setPadding(16,0,0,0);
cm7button.setTypeface(typeface);
cm7button.setId(cm7); // <-- Important
cm7button.setBackgroundResource(R.drawable.blue_button);
cm7button.setGravity(Gravity.TOP);
mConstraintLayout.addView(cm7button);
set.connect(cm7button.getId(),ConstraintSet.TOP,R.id.guidelinetest13,ConstraintSet.TOP,0);
set.connect(cm7button.getId(), ConstraintSet.BOTTOM, R.id.guidelinetest14, ConstraintSet.BOTTOM, 0);
set.connect(cm7button.getId(),ConstraintSet.RIGHT,R.id.guidelinetest2,ConstraintSet.RIGHT,0);
set.connect(cm7button.getId(),ConstraintSet.LEFT,R.id.guidelinetest1,ConstraintSet.LEFT,0);
// set.constrainHeight(cm7button.getId(), 200);
set.applyTo(mConstraintLayout);
cm7button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.myVib.vibrate(vibstark);
SoundEngine.playsound57();
}
});
cm7button.setOnLongClickListener(new View.OnLongClickListener(){
public boolean onLongClick(View v){
mConstraintLayout.removeView(cm7button);
Toast.makeText(getContext(), "Chord Removed", Toast.LENGTH_SHORT).show();
return true;
}
});
return true;
然后这里还有其他 95 个案例........ 然后是灰色按钮 2。
final AppCompatButton empty2 = (AppCompatButton) rootView.findViewById(R.id.empty2);
empty2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(getContext(), v);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case cm7popup:
Toast.makeText(getContext(), "Cm7 Chosen", Toast.LENGTH_LONG).show();
alreadychosen=true;
final AppCompatButton cm7button = new AppCompatButton(getContext());
cm7button.setText("Cm7");
cm7button.setTextSize(18);
cm7button.setPadding(16,0,0,0);
cm7button.setTypeface(typeface);
cm7button.setId(cm7_b); // <-- Important
cm7button.setBackgroundResource(R.drawable.blue_button);
cm7button.setGravity(Gravity.TOP);
mConstraintLayout.addView(cm7button);
set.connect(cm7button.getId(),ConstraintSet.TOP,R.id.guidelinetest13,ConstraintSet.TOP,0);
set.connect(cm7button.getId(), ConstraintSet.BOTTOM, R.id.guidelinetest14, ConstraintSet.BOTTOM, 0);
set.connect(cm7button.getId(),ConstraintSet.RIGHT,R.id.guidelinetest4,ConstraintSet.RIGHT,0);
set.connect(cm7button.getId(),ConstraintSet.LEFT,R.id.guidelinetest3,ConstraintSet.LEFT,0);
// set.constrainHeight(cm7button.getId(), 200);
set.applyTo(mConstraintLayout);
cm7button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.myVib.vibrate(vibstark);
SoundEngine.playsound57();
}
});
cm7button.setOnLongClickListener(new View.OnLongClickListener(){
public boolean onLongClick(View v){
mConstraintLayout.removeView(cm7button);
Toast.makeText(getContext(), "Chord Removed", Toast.LENGTH_SHORT).show();
return true;
}
});
return true;
还有95个案例。
解决方案
推荐阅读
- django - 已经有“帐户”应用程序时无法使用 django-allauth?
- vba - 将 Outlook 文件夹结构复制到 Windows 资源管理器
- numpy - 在 Numpy 中使用步骤 0.05 创建从 0 到 1 的范围
- javascript - 当离子菜单按钮在离子中关闭时如何触发功能
- amazon-web-services - 有没有办法使用任何运算符删除 AWS Managed Cassandra Service 表中的记录
- powershell - 在 PowerShell 中比较数组并复制它的问题
- php - 如何更改自定义帖子的语言?
- pytorch - 如何获得预测概率?
- matlab - 评估符号函数
- arrays - Angular如何洗牌数组