我在线性布局中有两个具有水平方向的文本视图。文本视图的宽度是wrap_content。如果两个文本视图的宽度之和小于屏幕宽度,则可以。如果宽度总和超过屏幕宽度,那么我需要将方向从水平更改为垂直。
我尝试在活动的onCreate中使用getWidth(),但它返回0.我可以尝试使用onSizeChanged()函数创建自定义视图,但我使用两个文本视图,所以我不确定当onSizeChanged()在一个文本视图不会确保完全绘制其他textview以获取宽度。任何建议对我都有帮助。
<LinearLayout android:id="@+id/status_container"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="horizontal">
<TextView android:id="@+id/view1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
<TextView android:id="@+id/view2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
</LinearLayout>
// In OnCreate() function
TextView view1 = (TextView) findViewById(R.id.view1);
TextView view2 = (TextView) findViewById(R.id.view2);
view1.setText("Good Morning,");
view2.setText("I am Ron");
int view1_width = view1.getWidth();
int view2_width = view2.getWidth();
if ((view1_width + view2_width) > screen_width) {
// Change the Linear Layout orientation to Vertical
}
这里view1_width和view2_width返回0.我想检查view1_width + view2_width是否大于屏幕宽度然后我需要将方向更改为垂直方向,否则水平方向很好。
-Ron
答案 0 :(得分:1)
将此添加到您的活动的onCreate
ViewTreeObserver vto = layout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//You should be able to get the width and height over here.
layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});