Android 获得布局高度的最佳位置是什么?
我试图从另一个Android 获得布局高度的最佳位置是什么?,android,android-layout,Android,Android Layout,我试图从另一个布局高度将Padding Top设置为指定的视图,但布局始终给我0值。 我尝试将代码放入onCreate和onStart和onResume中,其值相同 代码示例: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_screen_layout); E
布局高度将Padding Top
设置为指定的视图
,但布局
始终给我0
值。
我尝试将代码放入onCreate
和onStart
和onResume
中,其值相同
代码示例:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_screen_layout);
EditText editText = (EditText) findViewById(R.id.editText1);
editText.setPadding(0, findViewById(R.id.main_screen_banner_linearLayout).getBottom(), 0, 0);
System.err.println("Bottom:" + findViewById(R.id.main_screen_banner_linearLayout).getHeight() + "");
}
}
================
关于C Nick的回答:
谢谢@C尼克
我通过他的回答提出了一个解决方案:
public class CustomTextView extends TextView {
Runnable runnable;
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (runnable != null) {
runnable.run();
}
}
}
和Activity
final CustomTextView customTextView = (CustomTextView) findViewById(R.id.editText1);
customTextView.setRunnable(new Runnable() {
@Override
public void run() {
System.out.println("Height:" + findViewById(R.id.main_screen_banner_linearLayout).getHeight());
customTextView.setPadding(customTextView.getPaddingLeft(),
findViewById(R.id.main_screen_banner_linearLayout).getHeight(),
customTextView.getPaddingRight(), customTextView.getPaddingBottom());
}
});
现在它工作得很好,但我不认为我的解决方案是optima在布局过程发生后的某个时候,您需要设置填充。很可能,您可以覆盖EditText的onLayout,并在其中设置填充,因为此时应该对视图进行布局和测量
这对于布局/测量/绘制工作流来说是一个不错的资源