จะรวมเค้าโครงภายในเลย์เอาต์ใน Android ได้อย่างไร
ฉันกำลังสร้างเค้าโครงทั่วไป ฉันต้องการรวมเค้าโครงนั้นในหน้าอื่น
จะรวมเค้าโครงภายในเลย์เอาต์ใน Android ได้อย่างไร
ฉันกำลังสร้างเค้าโครงทั่วไป ฉันต้องการรวมเค้าโครงนั้นในหน้าอื่น
คำตอบ:
แก้ไข:ตามความคิดเห็นที่ขอข้อมูลเพิ่มเติมที่นี่ ใช้include
แท็ก
<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/yourlayout" />
เพื่อรวมเค้าโครงที่คุณต้องการใช้ซ้ำ
ตรวจสอบลิงค์นี้ ...
<include />
แท็กอย่างไรก็ตามคุณสามารถทำได้โดยใช้รหัสจาวา ดูคำตอบของ Phileo99 ด้านล่างเพื่อทราบวิธีการอ้างอิงถึงเค้าโครงที่รวมไว้ จากนั้นคุณสามารถแก้ไขเนื้อหาได้
โปรดทราบว่าหากคุณรวมandroid:id...
ไว้ใน<include />
แท็กแท็กจะลบล้างรหัสที่กำหนดไว้ภายในโครงร่างที่รวมไว้ ตัวอย่างเช่น:
<include
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/some_id_if_needed"
layout="@layout/yourlayout" />
yourlayout.xml:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/some_other_id">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/button1" />
</LinearLayout>
จากนั้นคุณจะอ้างอิงเค้าโครงที่รวมอยู่ในโค้ดดังนี้:
View includedLayout = findViewById(R.id.some_id_if_needed);
Button insideTheIncludedLayout = (Button)includedLayout.findViewById(R.id.button1);
ใช้<include />
แท็ก
<include
android:id="@+id/some_id_if_needed"
layout="@layout/some_layout"/>
นอกจากนี้โปรดอ่านบทความการสร้างส่วนประกอบ UI ที่ใช้ซ้ำได้และการผสานเลย์เอาต์
ลองทำตามนี้
<include
android:id="@+id/OnlineOffline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
layout="@layout/YourLayoutName" />
จากเอกสารทางการเกี่ยวกับการใช้เลย์เอาต์ซ้ำ
แม้ว่า Android จะนำเสนอวิดเจ็ตที่หลากหลายเพื่อให้มีองค์ประกอบเชิงโต้ตอบขนาดเล็กและใช้ซ้ำได้ แต่คุณอาจต้องใช้ส่วนประกอบขนาดใหญ่อีกครั้งซึ่งต้องใช้รูปแบบพิเศษ ในการใช้เค้าโครงที่สมบูรณ์ซ้ำได้อย่างมีประสิทธิภาพคุณสามารถใช้แท็กเพื่อฝังเค้าโครงอื่นภายในเค้าโครงปัจจุบัน
นี่คือไฟล์header.xmlของฉันซึ่งฉันสามารถใช้ซ้ำได้โดยใช้แท็กรวม
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="@string/app_name"
android:textColor="#000000" />
</RelativeLayout>
ไม่ฉันใช้ ใน XML เพื่อเพิ่มเค้าโครงอื่นจากไฟล์ XML อื่น
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#f0f0f0" >
<include
android:id="@+id/header_VIEW"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
layout="@layout/header" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="#ffffff"
android:orientation="vertical"
android:padding="5dp" >
</LinearLayout>
Because I want to reuse a ProgressBar
ปัญหาอะไรมา?
เรียนรู้เพิ่มเติมโดยใช้ลิงค์นี้ https://developer.android.com/training/improving-layouts/reusing-layouts.html
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Game_logic">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:id="@+id/text1"
android:textStyle="bold"
tools:text="Player " />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:layout_marginLeft="20dp"
android:id="@+id/text2"
tools:text="Player 2" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Blockquote
เค้าโครงด้านบนคุณสามารถใช้ในกิจกรรมอื่น ๆ โดยใช้
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SinglePlayer">
<include layout="@layout/activity_game_logic"/>
</androidx.constraintlayout.widget.ConstraintLayout>