ไม่สามารถดูเค้าโครงมุมมองที่สมบูรณ์ใน Android Studio


91

ฉันกำลังสร้าง LinearLayout แนวตั้งที่จะแสดงใน ScrollView แนวตั้ง ฉันหาวิธีใน Android Studio เพื่อดูส่วนของ LinearLayout ที่อยู่ด้านล่างของ ScrollView ไม่ได้ มีวิธีใดบ้างที่จะดูเค้าโครงแบบเต็มแทนที่จะ จำกัด ไว้ที่วิวพอร์ตที่ผู้แสดงภาพให้มา

คำตอบ:


66

เช่นเดียวกับที่ Drew กล่าวว่าการสร้างคำจำกัดความของอุปกรณ์ที่ผู้ใช้กำหนดเป็นทางออกเดียวที่เหมาะกับฉัน ด้านล่างนี้ฉันจะแสดงขั้นตอนในการปฏิบัติตาม:

ขั้นตอนที่ 1) ภายในบานหน้าต่างแสดงตัวอย่างให้เปิดเมนูแบบเลื่อนลงการเลือกอุปกรณ์เสมือนแล้วเลือกเพิ่มข้อกำหนดอุปกรณ์ ..

ป้อนคำอธิบายภาพที่นี่

ขั้นตอนที่ 2) ภายในอุปกรณ์เสมือนของคุณโต้ตอบคลิกสร้างอุปกรณ์เสมือนปุ่ม

ป้อนคำอธิบายภาพที่นี่

ขั้นตอนที่ 3) ภายในกล่องโต้ตอบเลือกฮาร์ดแวร์ให้คลิกปุ่มโปรไฟล์ฮาร์ดแวร์ใหม่

ป้อนคำอธิบายภาพที่นี่

ขั้นตอนที่ 4) ภายในกล่องโต้ตอบกำหนดค่าโปรไฟล์ฮาร์ดแวร์ระบุ (fe) ความละเอียด 720 x 4000 พิกเซลและขนาดหน้าจอ 12 นิ้ว นอกจากนี้ยังมีการตั้งค่าผล screensize ในความหนาแน่นของXHDPI (ขอบคุณ Mete)

ป้อนคำอธิบายภาพที่นี่

ขั้นตอนที่ 5) ปิดกล่องโต้ตอบทั้งหมดและรีสตาร์ท Android Studio ขั้นตอนที่ 6) เปิดเมนูแบบเลื่อนลงการเลือกอุปกรณ์เสมือน ผู้ใช้กำหนดรายละเอียดฮาร์ดแวร์ใหม่สามารถพบได้ในโทรศัพท์มือถือทั่วไปและยาเม็ด ป้อนคำอธิบายภาพที่นี่


1
ขอบคุณสำหรับคำตอบพร้อมรูปภาพและคำอธิบายที่เป็นประโยชน์
Roozbeh Zabihollahi

ไม่เห็น
ที่ไหน

37

ฉันเพิ่งค้นพบวิธีการ คุณต้องสร้างนิยามอุปกรณ์ที่ผู้ใช้กำหนดเองใน Android AVD - ฉันสร้างขึ้นมาซึ่งมีขนาด 480 x 4000 พิกเซล ออกและรีสตาร์ท Android Studio จากนั้นคุณสามารถเลือกอุปกรณ์นี้ในตัวแสดงตัวอย่างและสามารถเห็น LinearLayout มูลค่า 4000 พิกเซล


+1 เนื่องจากฉันไม่ได้แยกมุมมองของฉันและระบุความจำเป็นในการรีสตาร์ท
Iain Smith

นี่เป็นทางออกเดียวที่เหมาะสมที่ฉันพบจนถึงตอนนี้ มีปัญหาหนึ่ง; Android Studio เมื่อใช้ความละเอียดนี้จะตั้งค่าความหนาแน่นเป็น xxxhdpi โดยอัตโนมัติ มีวิธีตั้งค่าความหนาแน่นกลับเป็น hdpi หรือไม่? ฉันใช้ Android Studio v1.2
Brabbeldas

2
@Brabbeldas เมื่อคุณสร้างโปรไฟล์คุณสามารถกำหนดความกว้างและความสูงเป็นพิกเซล แต่คุณสามารถกำหนด "ขนาดหน้าจอ" เป็นนิ้วได้และการรวมกันของการตั้งค่าเหล่านี้จะกำหนดความหนาแน่น ตัวอย่างเช่นฉันตั้งค่าของฉันเป็น 480x4000 ด้วยขนาดหน้าจอ 16 นิ้วและสิ่งนี้ทำให้ฉันมี hdpi
Mete

ฉันได้เพิ่มคำตอบใหม่พร้อมภาพหน้าจอที่อธิบายวิธีสร้างข้อกำหนดอุปกรณ์ที่ผู้ใช้กำหนด @Drew หากคุณพบว่ามีประโยชน์สำหรับผู้อื่นคุณยอมรับได้ว่าเป็นคำตอบที่ถูกต้อง
Brabbeldas

วิเศษมาก! สำหรับฉันการปรับขนาดครั้งเดียวไม่ได้ผล! และคำตอบร้องstackoverflow.com/a/31582758/1752988ก็มีประโยชน์เช่นกัน!
Randika Vishman

31

พบวิธีที่ง่ายกว่าในการlayoutเพิ่มของคุณด้านล่างและปรับเปลี่ยนตามที่คุณต้องการ:

android:layout_marginTop="-1500dp"

17
คำตอบที่ดีที่สุด แต่จะดีกว่าถ้าคุณใช้: tools: layout_marginTop = "- 1500dp" วิธีนี้การเลื่อนเชิงลบจะใช้กับตัวแก้ไขโครงร่างเท่านั้นไม่ใช่ในรันไทม์
Leandro Glossman

มีประโยชน์เมื่อไม่สามารถใช้ปุ่มที่กล่าวถึงโดย @Eric ได้
Chintan Shah

19

ใน android studio เวอร์ชันใหม่ (ฉันไม่รู้ว่ามาจากเวอร์ชันไหน แต่ตอนนี้ฉันใช้ 2.3.3 ล่าสุดอยู่) คุณสามารถปรับขนาดเลย์เอาต์การแสดงตัวอย่างของคุณได้โดยลาก

ป้อนคำอธิบายภาพที่นี่


7
+1 ใช้ได้ผลสำหรับฉัน แต่ต้องเปลี่ยนอุปกรณ์ใน gif ด้านบนจาก nexus 4 เป็น "กำหนดเอง" ด้วยตนเองเพื่อให้ปุ่มลากแสดง
Songo

17

Android Studio จะเสนอมุมมองแบบเต็มที่สามารถสลับได้หาก ScrollView เป็นรากของเค้าโครง ฉันวางของฉันไว้ด้านบนของ RelativeLayout เริ่มต้นและต้องแก้ไขด้วยตนเองใน XML ก่อนที่ GUI จะให้มุมมองแบบเต็มแก่ฉัน


คุณจะพบสิ่งนี้ได้อย่างไร?
mszaro

1
@MattSzaro ฉันจำไม่ได้ว่าฉันพบข้อมูลที่ไหน แต่ถ้าคุณหมายถึงตำแหน่งที่จะหา XML เพื่อเปลี่ยนเพื่อให้ scrollview เป็นรายการรูทมีสองแท็บที่ด้านล่างเมื่อคุณเปิด. xml เพื่อดู: "ออกแบบ" และ "ข้อความ" คลิก "ข้อความ" หากคุณหมายถึงตำแหน่งที่จะค้นหาการสลับเมื่อคุณทำการเปลี่ยนแปลงแล้วฉันคิดว่าคุณต้องปิดและเปิดโปรเจ็กต์ใหม่อีกครั้ง (อาจจะ) จากนั้นใน "การออกแบบ" จะเป็นปุ่มซ้ายสุดในแถวที่สองของแถบเครื่องมือพร้อมไอคอน ที่มีลักษณะเป็นกระดาษสามคอลัมน์หรืออะไรสักอย่าง: "สลับโหมดการแสดงผล Viewport"
davidgro

1
@davidgro การค้นหาตัวเลือกในแถบเครื่องมือคือสิ่งที่ฉันกำลังมองหา ขอขอบคุณ! สิ่งนี้ช่วยได้จริงๆ
mszaro

1
เมื่อรวมกับเทคนิคใน " Re-using Layouts with<include/> " เราสามารถดึงข้อมูลที่ScrollViewอยู่ตรงกลางของเค้าโครงไปยังไฟล์ XML แยกต่างหากและดูแบบเต็มได้
ปาง

จะเกิดอะไรขึ้นถ้า scrollview ของคุณไม่ใช่มุมมอง root หวังว่าพวกเขาจะขยายสิ่งที่เต็มไปด้วยเลือดและเพียงแค่วางโครงร่างของหน้าจอโทรศัพท์ไว้ด้านบนเพื่อแสดงพื้นที่ที่สามารถดูได้
JPM

17

ฉันหวังว่าภาพหน้าจอจะช่วยคุณได้:

ภาพหน้าจอ


4
ไม่มีปุ่มนี้เมื่อฉันคลิกที่ scrollView ของฉันบน Component Tree
user3491799

8
พบเพียงว่า scrollview ต้องเป็นเลเยอร์บนสุดจึงจะแสดงปุ่มได้ ขอบคุณ Eric!
user3491799

ตัวเลือกมุมมองแบบเต็มช่วยแก้ปัญหาของฉันสำหรับมุมมองการเลื่อนแนวตั้ง แต่ฉันมีมุมมองเลื่อนแนวนอนในตัวซึ่งยังมองเห็นได้เพียงบางส่วน (ส่วนที่เหลือขยายไปทางขวาจากมุมมอง) มีวิธีแก้ปัญหานี้โดยไม่ใช้ตัวเลือกอุปกรณ์ที่กำหนดเองหรือไม่ เหรอ?
Essah

1
นี่คือคำตอบที่สมบูรณ์แบบ มันดีกว่าโปรไฟล์อุปกรณ์ที่มีความสูงมาก และมีให้บริการใน android studio 0.1.7+
Ninja

12

คุณสามารถใช้คุณสมบัติ scrollY เพื่อเลื่อน ScrollView ในการแสดงตัวอย่าง การใช้คุณลักษณะ scrollY กับเนมสเปซของเครื่องมือจะเลื่อนเฉพาะมุมมองในการแสดงผลไม่ใช่ในแอปจริง และตรวจสอบให้แน่ใจว่าคุณใช้ px เป็นหน่วยที่มีแอตทริบิวต์ scrollY

tools:scrollY="150px"

5

อัปเดต:ตอนนี้คุณสามารถเลื่อน ScrollView ได้โดยตรงภายในแผงแสดงตัวอย่าง (ฉันทดสอบบน Android studio เวอร์ชัน 2.3.2)

คำตอบสั้น ๆ : คลิกขวาที่ ScrollView ของคุณแล้วเลือก Refactor> Extract> Layoutเค้าโครง

Android-studio จะแยก ScrollView ของคุณเป็นไฟล์เลย์เอาต์ใหม่และใส่ tools:showIn="@layout/original_layout_file"ต์แอตทริบิวต์ที่รูทเลย์เอาท์ (ScrollView ของคุณ)

หมายเหตุ: Android-studio จะแสดงตัวอย่างเค้าโครงแบบเต็มหากเค้าโครงรูทเป็น ScrollView


1
@Tequilaman หากคุณใช้ Android studio เวอร์ชัน 2.3.2 คุณสามารถเลื่อนเนื้อหาของ ScrollView โดยใช้ล้อเลื่อนของเมาส์บนแผงแสดงตัวอย่าง
Momepukku

4

ใน Android Studio เวอร์ชัน 3.2.1 คุณสามารถเลือกอุปกรณ์ "กำหนดเอง" บนแผงแสดงตัวอย่างจากนั้นปรับขนาดการแสดงตัวอย่างเป็นความสูงที่คุณต้องการ

ตัวอย่างตัวอย่างที่กำหนดเองของสตูดิโอ android


1
นี่เป็นวิธีที่ง่ายที่สุด! ดีที่สุด.
Noor Hossain

2
  • คลิกที่ scrollView ในต้นไม้ conponent (ทางด้านขวา)
  • คลิกที่ปุ่มใหม่ที่ปรากฏทางด้านซ้าย (แถวที่สองของแถบเครื่องมือ)

1
คุณช่วยเพิ่มภาพหน้าจอได้ไหม ฉันไม่เห็นปุ่มใหม่ใด ๆ ปรากฏขึ้น
Brabbeldas

@Brabbeld เป็นปุ่มใหม่ที่เรียกว่า "สลับโหมดการแสดงผลวิวพอร์ต" บางทีอาจช่วยให้คุณstackoverflow.com/a/30443662/1323374
Ninja

1

ทางเลือกอื่นที่รวดเร็วคือการซ่อนเค้าโครงชั่วคราวที่ด้านบนเพื่อให้เค้าโครงที่ด้านล่างปรากฏในหน้าต่างที่มองเห็นได้ใน Android Studio

วางandroid:visibility="gone"เค้าโครงที่คุณต้องการซ่อน

ตัวอย่าง:

<HorizontalScrollView
            android:visibility="gone"
            android:id="@+id/hsv02"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/ll24"
            android:layout_below="@+id/ll199">

 </HorizontalScrollView>

นี่เป็นวิธีแก้ปัญหาที่ไม่สบายใจอย่างยิ่ง ... อย่าทำอย่างน้อยก็จำเป็นอย่างยิ่ง
Joaquin Iurchuk

1
ใช้tools:visibility="gone".
dnp

0

ฉันอาจจะสายไป แต่มันจะง่ายกว่ามากสำหรับคุณแค่ตั้งค่าระยะขอบเป็นลบเพื่อเลื่อนมุมมองเลื่อนไปทางซ้าย

ตัวอย่างเช่น:

ขอบ:

ซ้าย: -100px

ตอนนี้คุณสามารถดูและแก้ไข scrollview ได้ตามต้องการ!


0

เค้าโครงตาราง

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="1">
    <TableRow android:padding="5dip">
        <TextView
            android:layout_height="wrap_content"
            android:text="New Product Form"
            android:typeface="serif"
            android:layout_span="2"
            android:gravity="center_horizontal"
            android:textSize="20dip" />
    </TableRow>
    <TableRow>
        <TextView
            android:layout_height="wrap_content"
            android:text="Product Code:"
            android:layout_column="0"/>
        <EditText
            android:id="@+id/prod_code"
            android:layout_height="wrap_content"
            android:layout_column="1"/>
    </TableRow>
    <TableRow>
        <TextView
            android:layout_height="wrap_content"
            android:text="Product Name:"
            android:layout_column="0"/>
        <EditText
            android:id="@+id/prod_name"
            android:layout_height="wrap_content"
            android:scrollHorizontally="true" />
    </TableRow>
    <TableRow>
        <TextView
            android:layout_height="wrap_content"
            android:text="Product Price:" />
        <EditText
            android:id="@+id/prod_price"
            android:layout_height="wrap_content" />
    </TableRow>
    <TableRow>
        <Button
            android:id="@+id/add_button"
            android:text="Add Product"
            android:layout_height="wrap_content" />
        <Button
            android:id="@+id/cancel_button"
            android:text="Cancel"
            android:layout_height="wrap_content" />
    </TableRow>
</TableLayout>
















GridLAYOUT

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/GridLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:columnCount="3"
    android:rowCount="2"
    tools:context=".Main3Activity" >
    <Button
        android:id="@+id/button3"
        android:layout_column="0"
        android:layout_gravity="fill_horizontal"
        android:layout_row="0"
        android:text="Button"
        />
    <Button
        android:id="@+id/button1"
        android:layout_column="1"
        android:layout_gravity="fill_horizontal"
        android:layout_row="0"
        android:text="Button" />
    <Button
        android:id="@+id/button2"
        android:layout_column="2"
        android:layout_gravity="fill_vertical"
        android:layout_row="0"
        android:layout_rowSpan="2"
        android:text="Button" />
    <Button
        android:id="@+id/button4"
        android:layout_column="0"
        android:layout_columnSpan="2"
        android:layout_gravity="fill_horizontal"
        android:layout_row="1"
        android:text="Button" />
</GridLayout>





ANOTHER TABLE LAYOUT

<?xml version="1.0" encoding="utf-8"?>
<android.widget.TableLayout 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"
    android:stretchColumns="1"
    tools:context="com.example.dhanya.uitablelayout.MainActivity">
    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView
            android:text="Time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0" />
        <TextClock
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textClock"
            android:layout_column="1" />
    </TableRow>
    <TableRow>
        <TextView
            android:text="First Name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0" />
        <EditText
            android:width="200px"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </TableRow>
    <TableRow>
        <TextView
            android:text="Last Name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0" />
        <EditText
            android:width="100px"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </TableRow>
    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <RatingBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_span="2"
            android:id="@+id/ratingBar"
            android:layout_column="0" />
    </TableRow>
    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Submit"
            android:layout_span="2"
            android:id="@+id/button"
            android:layout_column="0" />
    </TableRow>
</android.widget.TableLayout>

0

สิ่งที่ดีที่สุดที่ฉันพบคือตั้งค่าอุปกรณ์เป็นแบบกำหนดเอง จากนั้นเราสามารถเปลี่ยนเค้าโครงได้ง่ายๆโดยการลาก


0

เลย์เอาต์ของฉันยาวและจำเป็นต้องเลื่อนเลย์เอาต์แม้จะใช้ความละเอียดยาวแนวตั้งและเมื่อฉันตั้งค่าตัวแก้ไขเลย์เอาต์เป็นความละเอียดสูงหน้าจอจะไม่เลื่อนอย่างสมบูรณ์และราบรื่น

ด้วยการตั้งค่าเค้าโครงเป็น 3.2_HVGA_slider_ADP1_API_27หน้าจอเลื่อนและปัญหาของฉันได้รับการแก้ไข

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.