如何在当前活动中获取视图(属于另一个活动)视图的高度和宽度。 例如。在活动中有一个按钮,我必须在其id的帮助下获得活动二中的按钮属性。 (我考虑过视图,因为它可以是ImageView,TextView,WebView或其他任何东西)。
这里我粘贴了我尝试过的代码。
公共类SecAct扩展了Activity {
ArrayList<Integer> butList1;
RelativeLayout help;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
help = (RelativeLayout)findViewById(R.id.helplay);
createWidgets();
}
private void createWidgets() {
// TODO Auto-generated method stub
butList1=MainActivity.butList;
int a=butList1.get(0);
View v=(View)(findViewById(a));
int width=v.getWidth();
int height=v.getHeight();
help.addView(v);
System.out.println("id is "+ width);
}
public void close(View v){
finish();
}
}
我能够获得a的值,但是我无法获得v(View)的属性,即height,width或id e.t.c.我得到一个空指针异常。
答案 0 :(得分:1)
首先从视图的活动中获取上下文,例如:
public static Context con;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_one);
con = this;
}
然后,在另一项活动中:
Context context = FIRST_ACTIVITY.con;
Activity firstActivy = (Activity) context;
ViewGroup firstActivityView = firstActivy.getWindow().getDecorView().findViewById(android.R.id.content);
View DISIRED_VIEW = firstActivityView.findViewById(R.id.DISIRED_VIEW_ID);
最后,获取宽度和高度:
int width = DISIRED_VIEW.getWidth();
int height = DISIRED_VIEW .getHeight();
也许这些值(宽度和高度)可以是0,所以你必须这样做:
final int width, height;
DISIRED_VIEW.post(new Runnable() {
@Override
public void run() {
width = DISIRED_VIEW.getWidth();
height = DISIRED_VIEW.getHeight();
}
});
答案 1 :(得分:0)
尝试getMeasuredHeight()
方法
答案 2 :(得分:0)
由于您尚未初始化 ArrayList butList1 ,因此您将获得空指针异常。初始化它并向其添加项目,然后使用它。像这样 -
butList1 = new ArrayList<Integer>();
butList1.add(findviewById(R.id.button_id));