activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/textView"
android:layout_width="400px"
android:layout_height="200px"
android:background="@color/colorAccent"
android:text="textView" />
</LinearLayout>
主要活动
public class MainActivity extends AppCompatActivity {
TextView textView;
LinearLayout.LayoutParams p;
DisplayMetrics metrics;
int displayWidth;
int displayHeight;
int viewWidth;
int viewHeight;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
//получаем размеры интересующего нашего View
viewWidth = textView.getWidth();
viewHeight = textView.getHeight();
//выводим данные о View (проверим, насколько точно будут выведены значения (сравним со значениями, которые мы передали в xml файле)
//для этого давайте использовать Log.
Log.i("userTest2020", String.valueOf("view width = "+viewWidth+"\n"+"view height = "+viewHeight));
}
@Override
protected void onResume() {
super.onResume();
//получаем размеры интересующего нашего View
//viewWidth = textView.getWidth();
//viewHeight = textView.getHeight();
//выводим данные о View (проверим, насколько точно будут выведены значения (сравним со значениями, которые мы передали в xml файле)
//для этого давайте использовать Log.
Log.i("userTest2020", String.valueOf("view width = "+viewWidth+"\n"+"view height = "+viewHeight));
}
}
结果
2020-03-30 07:48:51.994 28754-28754/com.bignerdranch.testresoulutionchanges I/userTest2020: view width = 0
view height = 0
2020-03-30 07:48:52.004 28754-28754/com.bignerdranch.testresoulutionchanges I/userTest2020: view width = 0
view height = 0
问题是什么?
注意:
起初我尝试使用“dp”在xml中传递宽度和高度值。
然后改为“px”。
另外,除了onCreate之外,我还在onResume中使用了它,以查看这个问题是否是由于View xml根本没有时间实现。
但显然——也许不是时候。到目前为止,我没有其他线索。
这就是为什么我在这里问我的问题。
结果还是一样。
我遇到了同样的问题,但我找到了解决方案:
在解决方案中,写到这是由于视图尚未完全绘制并添加到屏幕的事实。