我正在开发一个演示项目,因为我创建了一个包含ImageView
,EditText
等视图的XML文件。我在运行时在FrameLayout
上加载此XML文件。有一次我想删除所有视图并再次想要显示它们,我在按钮点击时使用removeView()
方法,但它对我不起作用,请告诉我正确的方法...
public class Demo extends Fragment implements OnClickListener, OnTouchListener{
//Declaration of framelayout
FrameLayout f;
//Declaration of imageview
ImageView imageview;
View view, framelayoutview;
File file;
EditText etcardname, EditTextUserName,EditTextUsesrMobNumber,EditTextUsesrEmailID,EditTextUsesrAddress;
TextView dialogtesting;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.activity_modify_card ,container, false);
framelayoutview = inflater.inflate(R.layout.frame_layout_data ,container, false);
captureImageInitialization();
Initialize();
return view;
}
// Initialization of all views components
private void Initialize() {
f=(FrameLayout)view.findViewById(R.id.framelayout);
Button btneditcardreset=(Button)view.findViewById(R.id.buttonresetcard);
btneditcardreset.setOnClickListener(this);
Bundle bundle = this.getArguments();
int myInt;
myInt = bundle.getInt("position");
imageview=(ImageView)framelayoutview.findViewById(R.id.imageViewicon);
EditTextUserName=(EditText)framelayoutview.findViewById(R.id.modifycardeditTextusername);
EditTextUsesrMobNumber=(EditText)framelayoutview.findViewById(R.id.editTextmobilesnumber);
EditTextUsesrEmailID=(EditText)framelayoutview.findViewById(R.id.editTextemailid);
EditTextUsesrAddress=(EditText)framelayoutview.findViewById(R.id.editTextaddress);
imageview.setOnTouchListener(this);
EditTextUserName.setOnTouchListener(this);
EditTextUsesrMobNumber.setOnTouchListener(this);
EditTextUsesrEmailID.setOnTouchListener(this);
EditTextUsesrAddress.setOnTouchListener(this);
f.addView(framelayoutview);
}
@Override
public void onClick(View v){
if(v.getId()==R.id.buttonresetcard){
if(framelayoutview.getParent()!=null){
f.removeAllViews();
}
f.addView(framelayoutview);
}
}
对不起,我忘了告诉我,我提供了OnTouchListener
,以便我可以在Layout
的任意位置移动视图。因此,当我按下重置按钮时,所有View
s应该移回原来的位置,这意味着他们在第一次加载时所处的位置..
答案 0 :(得分:0)
你可以使用
imageview.setVisibility(View.GONE);
和
imageview.setVisibility(View.VISIBLE);
关于特定事件
答案 1 :(得分:0)
如果您已将视图动态添加到FrameLayout
,则可以将其删除。
否则,如果您在frameLayout
XML中显示您的XML视图,则无法将其删除,但您可以通过设置setVisibility(View.GONE)
或setVisibility(View.INVISIBLE)
来隐藏它们。
答案 2 :(得分:0)
试试这个 -
@Override
public void onClick(View v){
if(v.getId()==R.id.buttonresetcard){
if(framelayoutview.getParent()!=null){
f.setVisibility(View.GONE);
}
f.addView(framelayoutview);
}
}