我有一个片段,其中我想在中央有一个主ImageButton,在两侧各有2个FAB,分别用于上一个或下一个Image。我已经用XML进行了设置,但是还不太清楚如何使其完全适合Java。
public class NewCard extends Fragment {
public static int cardNumber;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_new_card, container, false);
final ImageButton button = view.findViewById(R.id.card1);
FloatingActionButton previous = view.findViewById(R.id.previous);
FloatingActionButton next = view.findViewById(R.id.next);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
cardNumber = 1;
FinalSubmit fragment = new FinalSubmit();
getContext().getSharedPreferences("pref", 0).edit().putInt("int", cardNumber).apply();
address fragment4 = new address();
FragmentTransaction ft4 = getFragmentManager().beginTransaction();
ft4.replace(R.id.frameLayout, fragment4, "FragmentName");
ft4.commit();
}});
return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
答案 0 :(得分:0)
那么,您想要的是背景中的一个按钮图像,以及两个FAB通过一系列图片/循环来更改背景中的按钮图像的图像?
我是从正常活动中得到的,不是零碎的,但我认为应该是相同的。
ImageButton button;
int nImages=5; //whatever number of images youre cycle goes through
int currentImageId=3; //for example
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button= (ImageButton)findViewById(R.id.imgButton);
button.setOnClickListener(imgButtonHandler);
changeBackground(currentImageId);
fab1= (ImageButton)findViewById(R.id.fab1);
fab1.setOnClickListener(imgUp);
fab2= (ImageButton)findViewById(R.id.fab2);
fab2.setOnClickListener(imgDown);
}
//so now we are cycling through 1 to 5
View.OnClickListener imgUp = new View.OnClickListener() {
public void onClick(View v) {
if (currentImageId==5) //if we hit 5, and user is still pressing same fab we set
// it back to the start, 1
{
currentImageId=1;
changeBackground(currentImageId);
return;
}
currentImageId+=1 //Otherwise, just add 1 to the counter
changeBackground(currentImageId);
}
};
View.OnClickListener imgDown = new View.OnClickListener() {
public void onClick(View v) {
if (currentImageId==1) //if we hit 1, and user is still pressing same fab we set
// it back to the top, 5
{
currentImageId=5;
changeBackground(currentImageId);
return;
}
currentImageId-=1 //Otherwise, just subtract 1 to the counter
changeBackground(currentImageId);
}
};
public void changeBackground(int currentImageId) {
if (currentImageId==1) {
button.setBackgroundResource(image1 path or drawable);
}
if (currentImageId==2) {
button.setBackgroundResource(image2 path or drawable);
}
// and so on and so on... just add all the files
}
如果图片太多,可能不干净,可能会有更好的选择,但是我认为这很简单,这就是我会做的,而不是专家或其他任何人,只是想帮助您!