如何使底部 Sheet 对话框动态化?
How do I make my Bottom Sheet Dialog dynamic?
这是我第一次尝试在我的 Android Studio 项目中实现 BottomSheetDialog。为了更加熟悉这个过程,我尝试按照 Youtube 上的这个教程进行操作:https://youtu.be/hfoXhiMTc0c。在我的实际 Java Class 中,当我扫描包含不同信息的 NFC 芯片时,底部 Sheet 被激活。但是我无法在 Sheet 上动态显示来自芯片的信息。我猜这是因为 Sheet 是静态的?我如何才能显示来自芯片的信息,这些信息已经存储在我的 Java class 的变量中,并显示在 BottomSheet?[=13= 的文本字段中]
感谢任何帮助,谢谢!
这是 java class 的代码片段,其中底部 Sheet 被扩展:
final BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(
Scan.this, R.style.BottomSheetDialogTheme
);
View bottomSheetView = LayoutInflater.from(getApplicationContext())
.inflate(
R.layout.layout_bottom_sheet,
(LinearLayout)findViewById(R.id.bottomSheetContainer)
);
bottomSheetView.findViewById(R.id.addToCloset).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
bottomSheetDialog.dismiss();
}
});
bottomSheetDialog.setContentView(bottomSheetView);
bottomSheetDialog.show();```
我不熟悉 BottomSheetDialog。但是,
View bottomSheetView = LayoutInflater.from(getApplicationContext())
.inflate(
R.layout.layout_bottom_sheet,
(LinearLayout)findViewById(R.id.bottomSheetContainer)
);
您应该可以将上面的代码替换为,
View bottomSheetView = LayoutInflater.from(getApplicationContext())
.inflate(
R.layout.layout_bottom_sheet,
null
);
现在转到 layout_bottom_sheet.xml 布局文件。根据您的代码,它应该有一个没有 id 的线性布局。给它一个ID。我将该 ID 取为“test_ll”。
下面上面的代码就可以了,
LinearLayout ll = bottomSheetView.findViewById(R.id.test_ll);
之后你可以动态地添加视图到ll。要动态添加视图到 LinearLayout 参考,
Add text view to Linear layout
编辑:
如果你想在 LinearLayout 中使用视图,你可以通过,
View view = ll.findViewById(R.id.view_id);
如果你的textview在ll中,
TextView textView1 = ll.findViewById(R.id.tvcolor);
textView1.setText("Hello!!");
这将解决您的问题。
这是我第一次尝试在我的 Android Studio 项目中实现 BottomSheetDialog。为了更加熟悉这个过程,我尝试按照 Youtube 上的这个教程进行操作:https://youtu.be/hfoXhiMTc0c。在我的实际 Java Class 中,当我扫描包含不同信息的 NFC 芯片时,底部 Sheet 被激活。但是我无法在 Sheet 上动态显示来自芯片的信息。我猜这是因为 Sheet 是静态的?我如何才能显示来自芯片的信息,这些信息已经存储在我的 Java class 的变量中,并显示在 BottomSheet?[=13= 的文本字段中]
感谢任何帮助,谢谢!
这是 java class 的代码片段,其中底部 Sheet 被扩展:
final BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(
Scan.this, R.style.BottomSheetDialogTheme
);
View bottomSheetView = LayoutInflater.from(getApplicationContext())
.inflate(
R.layout.layout_bottom_sheet,
(LinearLayout)findViewById(R.id.bottomSheetContainer)
);
bottomSheetView.findViewById(R.id.addToCloset).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
bottomSheetDialog.dismiss();
}
});
bottomSheetDialog.setContentView(bottomSheetView);
bottomSheetDialog.show();```
我不熟悉 BottomSheetDialog。但是,
View bottomSheetView = LayoutInflater.from(getApplicationContext())
.inflate(
R.layout.layout_bottom_sheet,
(LinearLayout)findViewById(R.id.bottomSheetContainer)
);
您应该可以将上面的代码替换为,
View bottomSheetView = LayoutInflater.from(getApplicationContext())
.inflate(
R.layout.layout_bottom_sheet,
null
);
现在转到 layout_bottom_sheet.xml 布局文件。根据您的代码,它应该有一个没有 id 的线性布局。给它一个ID。我将该 ID 取为“test_ll”。
下面上面的代码就可以了,
LinearLayout ll = bottomSheetView.findViewById(R.id.test_ll);
之后你可以动态地添加视图到ll。要动态添加视图到 LinearLayout 参考,
Add text view to Linear layout
编辑:
如果你想在 LinearLayout 中使用视图,你可以通过,
View view = ll.findViewById(R.id.view_id);
如果你的textview在ll中,
TextView textView1 = ll.findViewById(R.id.tvcolor);
textView1.setText("Hello!!");
这将解决您的问题。