Android Studio'da tamamlanmış görünüm düzeni görülemiyor


91

Dikey ScrollView'da görüntülenecek dikey bir LinearLayout oluşturuyorum. Android Studio'da, ScrollView'ın altındaki LinearLayout bölümünü görmenin bir yolunu bulamıyorum. Oluşturucu tarafından sağlanan görüntü alanıyla sınırlamak yerine tam düzeni görmenin bir yolu var mı?

Yanıtlar:


66

Drew'un dediği gibi, kullanıcı tanımlı bir cihaz tanımı oluşturmak benim için çalışan tek çözüm oldu. Aşağıda size takip etmeniz gereken adımları gösteriyorum:

Adım 1) Önizleme bölmesinde, Sanal Cihaz Seçimi açılır menüsünü açın ve Cihaz Tanımı Ekle'yi seçin .

görüntü açıklamasını buraya girin

Adım 2) Sanal Cihazlarınız iletişim kutusunda Sanal Cihaz Oluştur düğmesine tıklayın.

görüntü açıklamasını buraya girin

Adım 3) Donanım Seç iletişim kutusunda Yeni Donanım Profili düğmesine tıklayın.

görüntü açıklamasını buraya girin

Adım 4) Donanım Profilini Yapılandır iletişim kutusunda (fe) 720 x 4000 piksel Çözünürlük ve 12 inç Ekran Boyutu belirtin . Ayrıca Ekran Boyutunun ayarlanması xhdpi yoğunluğuna neden olur (Mete sayesinde).

görüntü açıklamasını buraya girin

Adım 5) Tüm iletişim kutularını kapatın ve Android Studio'yu yeniden başlatın. Adım 6) Sanal Cihaz Seçimi açılır menüsünü açın . Yeni kullanıcı tanımlı donanım profili, Genel Telefonlar ve Tabletler altında bulunabilir . görüntü açıklamasını buraya girin


1
Tüm resimler ve faydalı açıklamalarla yanıtınız için teşekkürler
Roozbeh Zabihollahi

yükseklik eklemek için herhangi bir yer göremiyorum
Lasitha Lakmal

37

Nasıl olduğunu şimdi keşfettim. Android AVD'de kullanıcı tanımlı bir cihaz tanımı oluşturmanız gerekiyor - 480 x 4000 piksellik bir tane oluşturdum. Android Studio'dan çıkın ve yeniden başlatın, ardından bu cihazı önizleme oluşturucusunda seçebilir ve 4000 piksel değerinde LinearLayout görebilirsiniz.


Görüşümü ayırmadığım ve yeniden başlatma ihtiyacını belirtmediğim için +1.
Iain Smith

Şimdiye kadar bulduğum tek uygun çözüm bu. Bir sorun var; Android Studio, bu çözünürlüğü kullanırken, yoğunluğu otomatik olarak xxxhdpi olarak ayarlar. Yoğunluğu hdpi'ye geri getirmenin bir yolu var mı? Android Studio v1.2 kullanıyorum
Brabbeldas

2
@Brabbeldas profili oluştururken genişliği ve yüksekliği piksel olarak verebilirsiniz, ancak "Ekran boyutunu" inç olarak da verebilirsiniz ve bu ayarların kombinasyonu yoğunluğu belirler. Mesela ben 16 inç bir Screensize ile 480x4000 için mayın ayarlamak ve bu bana hdpi veriyor
Mete

Kullanıcı tanımlı cihaz tanımının nasıl oluşturulacağını açıklayan ekran görüntüleriyle yeni bir cevap ekledim. @ Drew, başkaları için yararlı bulursanız, doğru cevap olarak kabul edebilirsiniz.
Brabbeldas

Olağanüstü! Benim için yeniden boyutlandırma bir kez işe yaramadı! Ve aşağıdaki yanıt stackoverflow.com/a/31582758/1752988 Ayrıca yardımcı oldu!
Randika Vishman

31

Daha kolay bir çözüm bulduk , layoutaşağıdaki gibi bir şey ekleyin ve ihtiyaç duyduğunuz şekilde ayarlayın:

android:layout_marginTop="-1500dp"

17
En iyi yanıt, ancak şunları kullanırsanız daha iyi olur: tools: layout_marginTop = "- 1500dp". Bu şekilde negatif kaydırma, çalışma zamanında değil, yalnızca mizanpaj düzenleyicisine uygulanır.
Leandro Glossman

@Eric tarafından bahsedilen düğme mevcut olmadığında kullanışlıdır.
Chintan Shah

19

android stüdyosunun yeni sürümünde (hangi sürümden olduğunu bilmiyorum, ancak şimdi en son 2.3.3'ü kullanıyorum) önizleme düzeninizi sürükleyerek yeniden boyutlandırabilirsiniz

görüntü açıklamasını buraya girin


7
+1 benim için çalıştı, ancak sürükleme düğmesinin gösterilmesi için yukarıdaki gif'teki cihazı nexus 4'ten "Özel" e değiştirmek zorunda kaldı.
Songo

17

ScrollView düzenin kökü ise Android Studio, değiştirilebilir bir tam görünüm sunacaktır. Benimkini varsayılan RelativeLayout'un üstüne koymuştum ve GUI bana tam görünümü vermeden önce bunu XML'de manuel olarak düzeltmek zorunda kaldım.


Bunu nasıl buluyorsunuz?
mszaro

1
@MattSzaro Bilgileri nerede bulduğumu hatırlamıyorum, ancak XML'yi nerede bulacağımı kastediyorsanız, kaydırma görünümü kök öğe olsun, bir görünüm için .xml'yi açtığınızda altta iki sekme vardır: "Tasarım" ve "Metin". "Metin" e tıklayın. Değişikliği yaptıktan sonra geçişi nerede bulacağınızı kastediyorsanız, projeyi bir kez (belki) kapatıp yeniden açmanız gerektiğini düşünüyorum ve ardından "Tasarım" da bu, araç çubuğunun ikinci satırında bir simgeyle birlikte en soldaki düğmedir. üç sütunlu bir kağıt parçasına veya başka bir şeye benzeyen: "Görüntü Alanı Oluşturma Modunu Değiştir".
davidgro

1
@davidgro, araç çubuğundaki seçeneği bulmak aradığım şeydi. Teşekkür ederim! Bu gerçekten yardımcı oldu.
mszaro

1
" Düzenlerin Yeniden Kullanılması<include/> " tekniğiyle birleştirildiğinde ScrollView, bir düzenin ortasındaki bir düzeni ayrı bir XML dosyasına çıkarabilir ve tam olarak görüntüleyebiliriz.
Pang

Ya kaydırma görünümünüz kök görünüm değilse. Tüm kanlı şeyi genişletmelerini ve görüntülenebilir alanı göstermek için telefon ekranının bir ana hattını en üste koymalarını diliyorum.
JPM

17

Umarım ekran görüntüsü size yardımcı olur:

ekran görüntüsü


4
Bileşen Ağacı'ndaki
kaydırma Görünümüme

8
Düğmenin gösterilmesi için kaydırma görünümünün en üst katman olması gerektiğini öğrendim. Thx Eric!
user3491799

Tam görünüm Seçeneği, dikey kaydırma görünümleriyle ilgili sorunumu çözüyor, ancak hala yalnızca kısmen görülebilen gömülü bir Yatay kaydırma görünümüne sahibim (geri kalanı görünümün dışında sağa doğru uzanıyor) Özel cihaz seçeneğini kullanmadan bunu çözmenin bir yolu var mı ?
Essah

1
Bu mükemmel cevap. çok yüksek cihaz profilinden daha iyidir. ve android stüdyosu 0.1.7+
Ninja

12

Önizlemede ScrollView'ı kaydırmak için scrollY özelliğini kullanabilirsiniz. ScrollY niteliğini araçlar ad alanıyla kullanmak, gerçek uygulamada değil yalnızca ekrandaki görünümü kaydırır. Ve scrollY özelliğine sahip birim olarak piksel kullandığınızdan emin olun.

tools:scrollY="150px"

5

Güncelleme: Artık bir ScrollView'ı doğrudan önizleme panelinin içinde kaydırabilirsiniz (Android stüdyo sürüm 2.3.2'de test ettim)

Kısa cevap: ScrollView'a sağ tıklayın ve Refactor> Extract> Layout'u seçin .

Android-studio, ScrollView'ınızı yeni bir düzen dosyasına çıkaracak ve tools:showIn="@layout/original_layout_file"özniteliği kök düzenine (ScrollView'ınız) koyacaktır .

Not: Kök düzeni ScrollView ise Android stüdyo tam düzeni önizleyecektir.


1
@Tequilaman Android stüdyo sürüm 2.3.2 kullanıyorsanız, ScrollView içeriğini ön izleme panelinde bir fare tekerleği kullanarak
kaydırabilirsiniz

4

Android Studio sürüm 3.2.1'de, önizleme panelinde "Özel" cihazı seçebilir ve ardından önizlemeyi ihtiyacınız olan yüksekliğe yeniden boyutlandırabilirsiniz.

android studio özel önizleme örneği


1
bu en kolay yol! en iyi.
Noor Hossain

2
  • uygun ağaçta kaydırma görünümüne tıklayın (sağda)
  • solda görünen yeni düğmeye tıklayın (araç çubuğunun ikinci satırı)

1
bir ekran görüntüsü ekleyebilir misin? yeni bir buton göremiyorum.
Brabbeldas

@Brabbeld, "görüntü alanı oluşturma modunu değiştir" adlı yeni düğmedir. Size stackoverflow.com/a/30443662/1323374
Ninja

1

Diğer bir hızlı alternatif çözüm, düzenleri geçici olarak üstte gizlemektir, böylece alttaki düzenler Android Studio'daki görünür pencerede görünebilir.

Put android:visibility="gone"sen postu istediğiniz düzenleri üzerinde.

Misal:

<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>

Bu çok rahatsız edici bir çözüm ... Bunu yapmayın en azından son derece gerekli.
Joaquin Iurchuk

1
Kullanın tools:visibility="gone".
dnp

0

Geç kalmış olabilirim, ancak kaydırma görünümünü sola kaydırmak için kenar boşluklarını negatif olarak ayarlamak sizin için çok daha kolay olacaktır.

Örneğin:

marj:

sol: -100 piksel

Artık kaydırma görünümünü istediğiniz gibi görebilir ve düzenleyebilirsiniz!


0

TABLO DÜZENİ

<?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

Bulduğum en iyi şey, cihazı özel olarak ayarlamak. Ardından düzeni basitçe sürükleyerek değiştirebiliriz.


0

Düzenim uzun ve dikey uzun çözünürlüğü kullanırken bile düzeni kaydırması gerekiyor ve düzen düzenleyiciyi yüksek çözünürlüğe ayarladığımda, ekran tamamen ve sorunsuz bir şekilde kaymıyor

Düzeni 3.2_HVGA_slider_ADP1_API_27 olarak ayarlayarak , ekran kaydırıldı ve sorunum çözüldü

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.