2012-09-24 26 views
0

我想要設計一個佈局,但我想用正確的方式完成它。設計一個佈局

截至目前,我有這個作爲我的佈局(這是一個登錄表單):

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


    <TableRow 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/color_header" 
     android:padding="10dp" > 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="@android:color/white" 
      android:typeface="sans" 
      android:textStyle="bold" 
      android:text="@string/app_name"/> 
    </TableRow> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical|center_horizontal" 
     android:orientation="vertical"> 

     <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:gravity="center"> 

      <TextView 
       android:id="@+id/txtUser" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/login_user" 
       android:typeface="sans" 
       android:textAppearance="@android:style/TextAppearance.Medium" /> 

      <EditText 
       android:id="@+id/etUser" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:inputType="text" > 

       <requestFocus /> 
      </EditText> 

      <TextView 
       android:id="@+id/txtPassword" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/login_password" 
       android:typeface="sans" 
       android:textAppearance="@android:style/TextAppearance.Medium" /> 

      <EditText 
       android:id="@+id/etPassword" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:inputType="textPassword" /> 

      <CheckBox 
       android:id="@+id/cbRemember" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:typeface="sans" 
       android:text="@string/login_remember" /> 

      <Button 
       android:id="@+id/btnLogin" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="@string/login_login" /> 

     </LinearLayout> 

    </LinearLayout> 

</LinearLayout> 

這是輸出:

enter image description here

它將按預期工作,但它給我線29上的This LinearLayout layout or its LinearLayout parent is useless(第三LinearLayout)。

哪種方法可以達到我想要的效果?

謝謝!

+1

雖然這可能不是您的問題的解決方案,但可能會給您一些提示:http://www.androidhive.info/2011/10/android-login-and-registration-screen-design/ –

+1

@SiddharthLele感謝您的鏈接,因爲我打算在不久的將來使用滾動視圖,因此它與較小的屏幕兼容:) – silentw

回答

0

經過挖掘@Siddharth Lele評論鏈接後,我最終得到了符合我的需求的佈局,另外還有一點就是它可以與較小的設備兼容,也可以與較大的設備兼容。

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

    <TableRow 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/color_header" 
     android:padding="10dp" > 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="@android:color/white" 
      android:typeface="sans" 
      android:textStyle="bold" 
      android:text="@string/app_name"/> 
    </TableRow> 

    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:layout_gravity="center_vertical|center_horizontal" 
       android:gravity="center"> 

      <TextView 
       android:id="@+id/txtUser" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/login_user" 
       android:typeface="sans" 
       android:textAppearance="@android:style/TextAppearance.Medium" /> 

      <EditText 
       android:id="@+id/etUser" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:inputType="text" > 

       <requestFocus /> 
      </EditText> 

      <TextView 
       android:id="@+id/txtPassword" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/login_password" 
       android:typeface="sans" 
       android:textAppearance="@android:style/TextAppearance.Medium" /> 

      <EditText 
       android:id="@+id/etPassword" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:inputType="textPassword" /> 

      <CheckBox 
       android:id="@+id/cbRemember" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:typeface="sans" 
       android:text="@string/login_remember" /> 

      <Button 
       android:id="@+id/btnLogin" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="@string/login_login" /> 

     </LinearLayout> 

    </ScrollView> 

</LinearLayout> 

謝謝大家對你的答案,我肯定結束了借鑑他們的,因爲這東西,我會+1每一個答案,並從@Siddharth樂樂評論!

2

通過警告,系統只是想說你有空間來優化你的佈局代碼。

注意警告是個好習慣。

從下面的LineraLayout中,您必須刪除任何線性佈局。

<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical|center_horizontal" 
     android:orientation="vertical"> 

     <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:gravity="center"> 
+0

是的,但是我有這兩種佈局可使Remember Me與EditTexts佔用相同的寬度,登錄按鈕也是如此...... – silentw

+0

將您的班輪佈局高度設置爲包裹內容並刪除第一個線性佈局。 –

+0

它不會這樣做,因爲TableRow固定在頂部,我希望我的表單在屏幕中居中 – silentw

1

使用tablelayout

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/tableLayout1"  
android:layout_width="fill_parent" 
android:layout_height="fill_parent"  
android:gravity="center_vertical" 
android:stretchColumns="1"> 

<TableRow 
    android:id="@+id/row1" 
    android:layout_marginTop="25dp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/username" 
     android:layout_marginLeft="50dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="2dp"     
     android:text="user_name"   
     android:textSize="16sp" /> 
</TableRow> 

<TableRow 
    android:id="@+id/row2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <EditText 
     android:inputType="text" 
     android:id="@+id/editUsername" 
     android:layout_width="fill_parent" 
     android:layout_height="40dp" 
     android:layout_weight="2" 
     android:singleLine="true" 
     android:layout_marginLeft="50dp" 
     android:layout_marginTop="2dip" 
     android:layout_marginRight="50dp" 
     android:padding="10dp"/> 
</TableRow> 

<TableRow 
    android:id="@+id/row5"   
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 
    <CheckBox 
     android:id="@+id/remember" 
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"    
     android:button="@drawable/checkbox_selector"  
     android:layout_marginLeft="52dp" 
     android:padding="8dp" 
     android:textSize="12sp" 
     android:text="remember" 
     /> 
</TableRow> 
<TableRow 
    android:id="@+id/row6"    
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <Button 
     android:id="@+id/login" 
     android:layout_width="100dp" 
     android:layout_height="35dp" 
     android:text="login"     
     android:textStyle="bold" 
     android:layout_marginLeft="102dp" 
     /> 
</TableRow> 

+0

感謝您的有效答案,但我寧願以另一種方式做它... – silentw

1

試試這個:

<TableRow 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/color_header" 
    android:padding="10dp" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/app_name" 
     android:textColor="@android:color/white" 
     android:textStyle="bold" 
     android:typeface="sans" /> 
</TableRow> 

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/txtUser" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="@string/login_user" 
     android:textAppearance="@android:style/TextAppearance.Medium" 
     android:typeface="sans" /> 

    <EditText 
     android:id="@+id/etUser" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:inputType="text" > 

     <requestFocus /> 
    </EditText> 

    <TextView 
     android:id="@+id/txtPassword" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="@string/login_password" 
     android:textAppearance="@android:style/TextAppearance.Medium" 
     android:typeface="sans" /> 

    <EditText 
     android:id="@+id/etPassword" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:inputType="textPassword" /> 

    <CheckBox 
     android:id="@+id/cbRemember" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="@string/login_remember" 
     android:typeface="sans" /> 

    <Button 
     android:id="@+id/btnLogin" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="@string/login_login" /> 
</LinearLayout> 

enter image description here

+0

它不會返回我想要的輸出...... [看到此內容](http://i.imgur.com/HZO05.png) – silentw

+0

嘗試重新編譯資源,或者清理整個項目。它應該看起來像我上面張貼的圖片。 –

+0

感謝您的努力,但我已經找到了解決方案,我的問題使用'ScrollView' – silentw