2015-05-25 90 views
0

在Android中我已複製了以下佈局:如何在鍵盤出現時正確調整佈局大小?

enter image description here

這樣:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#94F734" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="48dp" 
     android:layout_marginLeft="48dp" 
     android:padding="0dp"> 

     <include layout="@layout/header"/> 

    </LinearLayout> 

    <RelativeLayout 
     android:id="@+id/body" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginLeft="48dp" 
     android:layout_marginRight="48dp" 
     android:layout_marginBottom="48dp" 
     android:paddingTop="96dp" 
     android:background="#463779B3" 
     android:visibility="visible"> 

     <TextView 
      android:id="@+id/name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="28dp" 
      android:text="title" 
      android:layout_above="@+id/code" 
      android:layout_centerHorizontal="true" 
      android:layout_marginBottom="48dp" 
      android:layout_marginLeft="8dp" 
      android:layout_marginRight="8dp" 
      android:textColor="#000000"/> 

     <EditText 
      android:id="@+id/code" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:hint="Insert here " 
      android:background="@drawable/back_item_edit" 
      android:textColor="#FFFFFF" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="36dp" 
      android:layout_marginRight="36dp"> 
      <requestFocus /> 

     </EditText> 

     <Button 
      android:id="@+id/prova" 
      android:layout_below="@id/code" 
      style="@style/initialButton" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="26dp" 
      android:text="Connect" 
      android:textColor="#000000" 
      android:layout_alignLeft="@id/code" 
      android:layout_alignRight="@id/code" 
      android:layout_marginLeft="8dp" 
      android:layout_marginRight="8dp" 
      android:visibility="visible"/> 

    </RelativeLayout> 

</LinearLayout> 

但是,當我點擊「插入這裏」出現一個問題:佈局不正確地調整並不適合在小屏幕上。

我以爲使用scrollview,但我不知道如何使用它。

當鍵盤出現我就表明:

  • 頭(如果有空間)
  • 標題(如果有空間)這裏
  • 插入連接
  • 綠色部分的佈局(如果有空間的話)
  • 鍵盤

有沒有辦法解決我的問題?

回答

2

首先,您可以使用「DPI」,就像指定很多參數:

android:layout_marginTop="48dp" 

這並不適用於動態上漿很多的事情工作。無論屏幕上其他元素的大小如何,您都要求高度爲特定高度。

要解決這個問題,您首先需要從絕對測量中移開,並開始使用運行時測量。通常情況下,您可以簡單地使用「hdpi」,「xhdpi」等文件夾來管理此操作,但鍵盤佈局是動態測量(運行時)。

您可以使用像加權LinearLayout這樣的XML提示根據可用大小調整屏幕。你也可以使用java代碼來改變元素的大小。但是你不能指望屏幕顯示比可用空間更大的元素(這是現在的問題)。另外,您需要確定元素如何「擠在一起」。

編輯:

爲了使不同的佈局有不同的邊距等基於屏幕尺寸/密度,你應該看看有每個屏幕密度的文件夾(即,「佈局xhdpi」例如文件夾)。

下面是文檔:http://developer.android.com/guide/practices/screens_support.html

使用「夢詩」喜歡這裏的文件夾包括:

Different values folders in android

所以你有很多的處理動態畫面尺寸選項。但也許是「最簡單」的很多情況下(比如你的,可能)是使用displayMetrics並相應地調整你的元素:

getting the screen density programmatically in android?

可以測量,調整,等等。每個元素都有不同LayoutParams或其他屬性,允許您以編程方式更改它們。您可能需要搜索您想要更改的特定內容。

+0

嗨!感謝你的回答。如何在不使用dpi而是使用hdpi,xhdpi等的情況下以一定的邊距居中放置身體?那麼如何通過代碼來改變元素的大小呢?我的目標是在所有屏幕分辨率至少顯示編輯文本和連接按鈕 – aeroxr1

1

您可以在清單文件中將此屬性用於您的活動windowSoftInputMode

+0

感謝您的答案。我使用adjustResize和adjustPan。隨着asdjust調整佈局調整大小錯誤的方式,並使用「adjustPan」鍵盤只使用後退按鈕消失:( – aeroxr1

相關問題