Java 如果我有一个包含3种可能布局的片段,如何在运行时交换布局?
我将有一个包含3个布局文件的片段。 所有3个布局文件都有一个文本视图和2个按钮 第一个布局文件只有textview和2个按钮 第二个布局文件只有textview和3个按钮 第三个布局文件只有textview和4个按钮 创建片段时,我将知道需要哪个布局文件,并可以使用switch语句在它们之间进行选择 我的困惑来自于如何定义和构造objects/ui元素 因为我可以在oncreateView中返回每个布局文件的视图,所以没有问题 但是我如何只构造必要数量的按钮呢Java 如果我有一个包含3种可能布局的片段,如何在运行时交换布局?,java,android,android-layout,android-fragments,Java,Android,Android Layout,Android Fragments,我将有一个包含3个布局文件的片段。 所有3个布局文件都有一个文本视图和2个按钮 第一个布局文件只有textview和2个按钮 第二个布局文件只有textview和3个按钮 第三个布局文件只有textview和4个按钮 创建片段时,我将知道需要哪个布局文件,并可以使用switch语句在它们之间进行选择 我的困惑来自于如何定义和构造objects/ui元素 因为我可以在oncreateView中返回每个布局文件的视图,所以没有问题 但是我如何只构造必要数量的按钮呢 因为根据具体情况,我只有两个按钮可
因为根据具体情况,我只有两个按钮可见,但一个类控制所有4个按钮。你不需要3种不同的布局。 只需根据需要更改额外按钮的可见性 使用textview和2个按钮放大默认布局,然后添加逻辑
thirdButton.visibility = if(shouldDisplayThirdButton) View.Visible else View.Gone
fourthButton.visibility = if(shouldDisplayFourthButton) View.Visible else View.Gone
你不需要3种不同的布局。 只需根据需要更改额外按钮的可见性 使用textview和2个按钮放大默认布局,然后添加逻辑
thirdButton.visibility = if(shouldDisplayThirdButton) View.Visible else View.Gone
fourthButton.visibility = if(shouldDisplayFourthButton) View.Visible else View.Gone
您可以有一个布局,只需根据某些条件切换按钮可见性:
myButton.visibility = View.Visible(or View.Gone)
或者,您可以创建如下片段布局:
FrameLayout
LayoutWith2Buttons
LayoutWith3Buttons
LayoutWith4Buttons
以及这些布局的可视性
myLayoutWith2Buttons.visibility = View.Visible (or View.Gone)
您可以有一个布局,只需根据某些条件切换按钮可见性:
myButton.visibility = View.Visible(or View.Gone)
或者,您可以创建如下片段布局:
FrameLayout
LayoutWith2Buttons
LayoutWith3Buttons
LayoutWith4Buttons
以及这些布局的可视性
myLayoutWith2Buttons.visibility = View.Visible (or View.Gone)
我不知道您想要得到什么,但您也可以使用带有PageAdapter的ViewPager
class CustomVPAdapter extends PagerAdapter {
private String[] pagesList;
private Context context;
public CustomVPAdapter(Context context, String[] pagesList) {
this.pagesList= pagesList;
this.context = context;
}
@Override
public int getCount() {
return this.pagesList.length;
}
@Override
public boolean isViewFromObject(android.view.View view, Object object) {
return (view == (ConstraintLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
LayoutInflater layoutInflater = ((LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE));
android.view.View view = layoutInflater.inflate(R.layout.custome_pager_adapter, container, false);
final ImageView localImageView = (ImageView) view.findViewById(R.id.iv_page);
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((ConstraintLayout) object);
}
}我不知道您想要什么,但您也可以将ViewPager与PageAdapter一起使用
class CustomVPAdapter extends PagerAdapter {
private String[] pagesList;
private Context context;
public CustomVPAdapter(Context context, String[] pagesList) {
this.pagesList= pagesList;
this.context = context;
}
@Override
public int getCount() {
return this.pagesList.length;
}
@Override
public boolean isViewFromObject(android.view.View view, Object object) {
return (view == (ConstraintLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
LayoutInflater layoutInflater = ((LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE));
android.view.View view = layoutInflater.inflate(R.layout.custome_pager_adapter, container, false);
final ImageView localImageView = (ImageView) view.findViewById(R.id.iv_page);
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((ConstraintLayout) object);
}
}布局根据按钮的不同而变化,但如果我有两个按钮,它们需要并排排列。如果我有三个,它们需要2个在上面,一个在它们和下面之间居中。如果我有四个按钮,它们是以立方体样式排列的。但是布局会根据按钮的不同而变化,如果我有两个按钮,它们需要并排排列。如果我有三个,它们需要2个在上面,一个在它们和下面之间居中。如果我有四个按钮,它们是以立方体样式排列的。