2012-09-22 495 views
1

我正在設計Android應用程序,我已經在頂部保存了一個HorizontalScrollView以在滾動視圖中顯示3登錄控制(用戶名和密碼的文本框)。我幾乎已經達到了我想要的效果,除了一個小缺陷,即它不佔用整個屏幕寬度,如下圖所示。我如何使其寬度爲fill_parent需要幫助修復佈局

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:panel="http://schemas.android.com/apk/res-auto" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#CCC" 
android:orientation="vertical" > 

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

    <org.miscwidgets.widget.Panel 
     android:id="@+id/mytopPanel" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     panel:animationDuration="1000" 
     panel:closedHandle="@drawable/top_switcher_collapsed_background" 
     panel:content="@+id/mypanelContent" 
     panel:handle="@+id/mypanelHandle" 
     panel:linearFlying="true" 
     panel:openedHandle="@drawable/top_switcher_expanded_background" 
     panel:position="top" > 

     <Button 
      android:id="@+id/mypanelHandle" 
      android:layout_width="wrap_content" 
      android:layout_height="33dip" 
      android:layout_gravity="center_horizontal" /> 

     <HorizontalScrollView 
      android:id="@+id/mypanelContent" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" > 

      <RelativeLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 

       <LinearLayout 
        android:id="@+id/linearLayout" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" > 

        <EditText 
         android:id="@+id/editTextUserName" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:layout_margin="3dp" 
         android:layout_marginTop="6dp" 
         android:hint="@string/editUserName" > 
        </EditText> 

        <EditText 
         android:id="@+id/editTextPassword" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:layout_margin="3dp" 
         android:hint="@string/editUserPwd" > 
        </EditText> 

        <TextView 
         android:id="@+id/textView" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:background="#323299" 
         android:gravity="center" 
         android:padding="4dip" 
         android:text="@string/drpDwnTxt" 
         android:textColor="#eee" 
         android:textSize="16dip" 
         android:textStyle="bold" /> 
       </LinearLayout> 

       <LinearLayout 
        android:id="@+id/linearLayout1" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_toRightOf="@+id/linearLayout" 
        android:orientation="vertical" > 

        <EditText 
         android:id="@+id/editTextUserName1" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:layout_margin="3dp" 
         android:layout_marginTop="6dp" 
         android:hint="@string/editUserName" > 
        </EditText> 

        <EditText 
         android:id="@+id/editTextPassword1" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:layout_margin="3dp" 
         android:hint="@string/editUserPwd" > 
        </EditText> 

        <TextView 
         android:id="@+id/textView1" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:background="#323299" 
         android:gravity="center" 
         android:padding="4dip" 
         android:text="@string/drpDwnTxt" 
         android:textColor="#eee" 
         android:textSize="16dip" 
         android:textStyle="bold" /> 
       </LinearLayout> 
      </RelativeLayout> 
     </HorizontalScrollView> 
    </org.miscwidgets.widget.Panel> 
</LinearLayout> 
</FrameLayout> 

enter image description here

+0

如果我的回答對你有幫助,然後改善它。謝謝 –

回答

0

這裏是你可以做什麼。

在XML:

定義1水平線性佈局。

定義3個垂直線性佈局。

在每個垂直線性佈局中,放置一對EditTexts作爲用戶名和密碼。 [確保其寬度屬性是"fill_parent"即每個editTexts的應填寫內它們被放置在垂直線性佈局寬度]

把這些3個垂直線性佈局水平線性佈局內。

在Java:

使水平線性佈局(其含有其他三個佈局)到具有顯示器的寬度的3倍的寬度。

Display display = getWindowManager().getDefaultDisplay(); 
     int width = display.getWidth(); 
     int height = display.getHeight(); 
     horizontalLayout = (LinearLayout) findViewById(R.id.yourHorizonatalLinearLayout); 
     horizontalLayout.setLayoutParams(new LinearLayout.LayoutParams(
       (width * 3), height)); 

現在,對於每個垂直線性佈局(其被放置在水平線性佈局內,幷包含一對用戶名和密碼字段)的使寬度等於設備顯示器的寬度。

下面的代碼是針對垂直線性佈局之一,您需要爲其他兩個重複此操作。類似的代碼片段,只需更改ID。

firstEditLayout = (LinearLayout) findViewById(R.id.yourFirstVerticalLinearLayout); 
     firstEditLayout.setGravity(Gravity.CENTER_VERTICAL); 
     firstEditLayout.setLayoutParams(new LinearLayout.LayoutParams(
       (width), height)); 

P.S. :我希望我已經很清楚你的理解。

+0

根據您的建議進行更改後,應用程序開始強制關閉' 09-20 23:58:50.360:E/AndroidRuntime(2199):致命例外:main 09-20 23:58:50.360:E/AndroidRuntime(2199):java.lang.ClassCastException:android.widget.LinearLayout $ LayoutParams E:// AndroidRuntime(2199): 09-20 23:58:50.360:E/AndroidRuntime(2199):\t at android.widget.FrameLayout.onLayout(FrameLayout.java:293) 09-20 23:58:50.360: \t at android.widget.Horizo​​ntalScrollView.onLayout(Horizo​​ntalScrollView.java:1297) 09-20 23:58:50。360:E/AndroidRuntime(2199):\t at android.view.View.layout(View.java:7175) ' –

+0

是的,因爲您正在嘗試將FrameLayout投影到LinearLayout中。也發生在我身上。確保你只導入了LinearLayout而不是FrameLayout。 – Swayam

0

親愛的我也面臨這個問題,我解決它,所以你使用此代碼。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relLayoutLogin" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/bkg_poi_ipad" 
    android:orientation="vertical" > 

    <RelativeLayout 
     android:id="@+id/tabRowHeader" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/heder_poi_ipad" > 

     <Button 
      android:id="@+id/btnBack" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerVertical="true" 
      android:background="@drawable/img_btn_back" /> 

     <TextView 
      android:id="@+id/lblTitle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:text="@string/loginTitle" 
      android:textColor="#000000" 
      android:textSize="30dp" 
      android:textStyle="bold" /> 
    </RelativeLayout> 

    <LinearLayout 
     android:id="@+id/linearLogin" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/lblUsername" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/usernameTitle" 
      android:textColor="#FFFFFF" 
      android:textSize="20dp" /> 

     <EditText 
      android:id="@+id/txtUsername" 
      android:layout_width="200dp" 
      android:layout_height="wrap_content" 
      android:inputType="text" /> 

     <TextView 
      android:id="@+id/lblPassword" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:text="@string/passwordTitle" 
      android:textColor="#FFFFFF" 
      android:textSize="20dp" /> 

     <EditText 
      android:id="@+id/txtpassword" 
      android:layout_width="200dp" 
      android:layout_height="wrap_content" 
      android:inputType="textPassword" /> 

     <Button 
      android:id="@+id/btnLogin" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:background="@drawable/btn_login_ipad" /> 
    </LinearLayout> 

</RelativeLayout> 

它`像這樣請參考吧.. enter image description here

+0

再次閱讀我的問題.. **我想在我的HORIZONTALSCROLLVIEW總共有六個文本框(EditText),即總共3對用戶名和密碼。** –