如何在Android中獲取檢視的尺寸?


有很多情況需要建立動態檢視而不是在XML中建立檢視。在這種情況下,我們需要獲取檢視的尺寸。以下是在Android中獲取檢視尺寸的簡單解決方案。

要獲取任何檢視的高度,請使用以下程式碼

int width = view.getMeasuredHeight();

要獲取任何檢視的寬度,請使用以下程式碼

int height = view.getMeasuredWidth();

在獲取寬度和高度之前,我們應該為檢視分配預設測量值,如下所示

view.measure(0, 0);

在上面的程式碼中,view可以是TextView、EditText、Button等。以下是一個演示如何在Android中查詢檢視尺寸的示例

步驟1 - 在Android Studio中建立一個新專案,轉到檔案 ⇒ 新建專案,並填寫所有必需的詳細資訊以建立新專案。

步驟2 - 將以下程式碼新增到res/layout/activity_main.xml。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/rootview"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   tools:context=".MainActivity">
</LinearLayout>

在上面的示例中,我們沒有任何檢視,我們建立了一個根檢視/父檢視。我們可以在java中新增子檢視,如下所示:

import android.os.Bundle;
import android.support.constraint.ConstraintLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
   ConstraintLayout constraintLayout;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      TextView msg = new TextView(this);
      msg.setText("sample text for checking diemnsions");
      msg.setPadding(10, 10, 10, 10);
      msg.measure(0, 0);
      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
      params.setMargins(5, 15, 0, 0);
      msg.setLayoutParams(params);
      msg.setGravity(Gravity.CENTER);
      LinearLayout layout = (LinearLayout) findViewById(R.id.rootview);
      layout.addView(msg);
      int width = msg.getMeasuredHeight();
      int height = msg.getMeasuredWidth();
      Toast.makeText(this, "width " + String.valueOf(width) + " height " + String.valueOf(height), Toast.LENGTH_LONG).show();
   }
}

在上面的示例中,我們建立了一個動態TextView並添加了TextView屬性,例如setText()、setPadding()、setGravity()。我們為TextView提供了佈局引數,如下所示。

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(5, 15, 0, 0);
msg.setLayoutParams(params);

現在,我們必須將TextView附加到父檢視,如下所示:

LinearLayout layout = (LinearLayout) findViewById(R.id.rootview);
layout.addView(msg);

最後,我們使用getMeasuredHeight(); 和getMeasuredWidth(); 來查詢TextView的高度和寬度,如下所示:

int width = msg.getMeasuredHeight();
int height = msg.getMeasuredWidth();
Toast.makeText(this, "width " + String.valueOf(width) + " height " + String.valueOf(height), Toast.LENGTH_LONG).show();

讓我們嘗試執行您的應用程式。我假設您已將您的實際Android移動裝置連線到您的計算機。要在Android Studio中執行應用程式,請開啟您專案中的一個活動檔案,然後單擊執行 播放圖示  工具欄中的圖示。選擇您的移動裝置作為選項,然後檢查您的移動裝置,它將顯示您的預設螢幕:

Sample Dimensions

在上面的螢幕中,我們在Toast中得到了TextView的尺寸。

點選 此處 下載專案程式碼

更新於:2020年6月25日

5K+ 瀏覽量

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告