2010-11-25 106 views
2

我想簡單地將EditText組件的高度設置爲用戶屏幕高度的50%。如何動態設置EditText高度

我從一個xml文件(main.xml)創建初始佈局,加載到Activity的onCreate(Bundle)中。從xml配置中,我瞭解如何將EditText高度設置爲文字值,例如android:layout_height =「150dip」,並從onCreate(Bundle)中,我明白我可以在EditText組件上調用setHeight(int) ,但是對setHeight(int)的調用似乎被忽略了,如果我沒有在xml中設置layout_height,那麼當我的應用程序啓動時,我會得到一個異常,抱怨高度值是必需的(並且應用程序死亡)。

有沒有辦法根據用戶的屏幕高度來設置xml的高度?換句話說,在xml中,是否可以檢索用戶的屏幕高度並使用它來計算組件的值?

(我放置的EditText與垂直取向的的LinearLayout。)

+0

塔納,爲什麼你實際上是試圖設置編輯文本height.Is這是由於軟鍵盤是掩蓋你的空間並阻止視圖? – 100rabh 2010-11-25 11:05:42

+0

此輸入字段將接受許多文本行,並且我希望用戶能夠在屏幕上看到不止一行。 – 2010-11-26 05:58:10

回答

5

使用線性佈局,的EditText的重量設定爲1,然後添加另一空視圖,並設置其重量爲1,以及。

0

在Java中,你可以試試這個:

package com.stackoverflow.q4274819; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.DisplayMetrics; 
import android.view.WindowManager; 
import android.widget.EditText; 
import android.widget.LinearLayout; 

public class Q4274819 extends Activity { 
    /** 
    * Called when the activity is first created. 
    */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     DisplayMetrics metrics = new DisplayMetrics(); 
     WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); 
     wm.getDefaultDisplay().getMetrics(metrics); 
     final float height = metrics.heightPixels; 

     EditText e = (EditText) findViewById(R.id.edit); 
     e.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, (int) (height/2))); 

     LinearLayout l = (LinearLayout) findViewById(R.id.layout); 
     l.requestLayout(); 
    } 
} 

給定一個佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/layout" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
     > 
    <EditText android:id="@+id/edit" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="@string/hello" 
      /> 
</LinearLayout> 
0

感謝您的答覆。相反,我想了一些其他的東西。

在xml中,不是指定文字數字值,例如「200dip」,對於android:layout_height,如果只使用「fill_parent」,那麼在調用setHeight(int)的Activity中設置的值不會被忽略。

雖然,我還沒有擡起頭來,如果這個工程由設計或只是一個小故障...