Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีดึงขนาดของ View ใน Android


มีหลายกรณีที่เราควรสร้าง Dynamic View แทนการสร้าง View ใน XML ในสถานการณ์นั้น เราควรจะต้องดึงขนาดของ View นี่คือวิธีง่ายๆ ในการดึงขนาดของ View ใน Android

เพื่อดึงความสูงของ View ใดๆ ใช้โค้ดต่อไปนี้

int width = view.getMeasuredHeight();

เพื่อดึงความกว้างของ View ใดๆ ใช้โค้ดต่อไปนี้

int height = view.getMeasuredWidth();

ก่อนดึงความกว้างและความสูง เราควรกำหนด Default Measure ให้ View ดังนี้

view.measure(0, 0);

ในโค้ดข้างต้น View คือเช่น TextView, EditText, Button ฯลฯ นี่คือตัวอย่างสาธิตการหาขนาดของ View ใน Android

Step 1 - สร้าง Project ใหม่ใน Android Studio ไปที่ File → New Project และกรอกรายละเอียดทั้งหมดเพื่อสร้าง Project ใหม่

Step 2 - เพิ่มโค้ดต่อไปนี้ใน res/layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"    xmlns:tools="https://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>

ในตัวอย่างข้างต้นเราไม่มี View ใดๆ เราสร้างแค่ Root View / Parent View เราสามารถเพิ่ม Child View ใน 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 dimensions");       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() เรากำหนด Layout Params ให้ TextView ดังนี้

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

ตอนนี้เราต้อง Append Text View เข้า Parent View ดังนี้

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

สุดท้ายเราใช้ getMeasuredHeight() และ getMeasuredWidth() เพื่อหาความสูงและความกว้างของ Text View ดังนี้

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

ลองรันแอปพลิเคชันของคุณ สมมติว่าคุณเชื่อม Android Device จริงกับคอมพิวเตอร์แล้ว เพื่อรันแอปจาก Android Studio ให้เปิดไฟล์ Activity ของโปรเจกต์และคลิกไอคอน Run จาก Toolbar เลือก Mobile Device ของคุณเป็นตัวเลือก และตรวจสอบ Mobile Device ซึ่งจะแสดงหน้าจอ Default

วิธีดึงขนาดของ View ใน Android

ในหน้าจอข้างต้นเราได้ขนาดของ TextView ใน Toast