我有一个布局,指定相对维度的小部件大小,例如:
<LinearLayout ... layout_height="fill_parent">
<ImageView ... layout_height="wrap_content" />
<TextView ... layout_height="120dp" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
紧接着onCreate,我想知道ImageView的高度是多少.怎么做?
注:如果我打电话getHeight()的onCreate,我得到0.
我也试过imageView.postDelayed,它适用于2.1模拟器但在1.5模拟器上失败(我也得到0).
最后,我尝试创建一个Handler,然后我handler.postDelayed用10毫秒的延迟调用.它适用于2.1和1.5模拟器,但是当我在eclipse调试器中启动程序时失败(因此,我得出结论,使用延迟并不能保证在imageview布局后获得高度.)
我试图使用ListView创建ListView滚动的背景.我的方法是基于货架上的这个课程,但在货架上一切都有相同的高度,我无法做出同样的保证.
我有这样的活动:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = (ListView) findViewById(R.id.listView);
List<String> items = new ArrayList<String>();
for(int i=0; i < 100; ++i) {
items.add("Hello " + i);
}
CustomArrayAdapter adapter = new CustomArrayAdapter(this, items);
listView.setAdapter(adapter);
}
}
Run Code Online (Sandbox Code Playgroud)
CustomArrayAdapter的位置是:
public class CustomArrayAdapter extends ArrayAdapter<String> {
private List<Integer> mHeights;
public View getView(int position, View convertView, ViewGroup parent) {
//snip
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是在适配器中使用视图行的高度填充mHeights.
我的主要尝试是在getView()中执行此操作:
if(row.getMeasuredHeight() == 0) {
row.measure(
MeasureSpec.makeMeasureSpec(0, MeasureSpec.EXACTLY), …Run Code Online (Sandbox Code Playgroud)