我已经创建了一个布局。全部以编程方式完成。现在我有一个按钮,该按钮设置为在单击时更改 View 的可见性。坦率地说,我不知道如何引用 View 。
部分代码如下:
//my button to show pop-up
Button btn_showPop = new Button(this);
btn_showPop.setText("Pop-up");
btn_showPop.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
btn_showPop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
hsv.post(new Runnable() {
@Override
public void run() {
if (Menu_Displayed) {
//pop-up
li_pop.setVisibility(View.VISIBLE); //how do I reference li_pop
} else {
//do nothing
}
}
});
}
});
// pop-up:
final LinearLayout li_pop = new LinearLayout(this);
li_pop.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
li_pop.setOrientation(1);// 1 is vertical
li_pop.setBackgroundColor(Color.LTGRAY);
li_pop.setVisibility(View.GONE);
li_pop.setClickable(true);
最佳答案
更改您的代码以获取对动态创建的 View 的引用
第一个 decalre li_pop
在类级别
LinearLayout li_pop;
创建时 li_pop
的第二个 id 设置为:
li_pop = new LinearLayout(this);
li_pop.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
li_pop.setId(599980); // set LinearLayout id here
现在您可以在单击按钮时引用 li_pop
LinearLayout :
@Override
public void onClick(View v) {
hsv.post(new Runnable() {
@Override
public void run() {
if (Menu_Displayed) {
//pop-up
li_pop.setVisibility(View.VISIBLE);
//OR
LinearLayout li_popnew=(LinearLayout)findViewById(599980);
li_popnew.setVisibility(View.VISIBLE);
} else {
//do nothing
}
}
});
关于android - 如何以编程方式引用 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14003369/