Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获得布局高度的最佳位置是什么?_Android_Android Layout - Fatal编程技术网

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,并在其中设置填充,因为此时应该对视图进行布局和测量

这对于布局/测量/绘制工作流来说是一个不错的资源