2011-08-17 4 views
3

해결 방법이 확실하지 않은 Android UI 문제가 있습니다. 탭 호스트에 여러 항목이 있습니다. 하나의 경우, 탭 중 하나에있는 scrollView에 추가 된 필드가 동적으로 추가됩니다. 화면 하단에 상대 레이아웃을 사용하는 버튼이 있습니다. 문제는 스크롤 뷰 (및 다른 탭의 선형 레이아웃)가 하단 버튼을 넘어서 확장된다는 것입니다. 결과적으로 화면의 마지막 필드는 버튼에 의해 숨겨지기 때문에 볼 수 없게됩니다. 다음은 내 레이아웃의 xml뿐만 아니라 이슈의 스크린 샷입니다. 어떤 도움이라도 대단히 감사합니다. enter image description hereTabHost의 상대 레이아웃은 무엇입니까?

주요 레이아웃 :

<?xml version="1.0" encoding="utf-8"?> 

<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/background_nologo" > 

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

<TabWidget android:id="@android:id/tabs" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" /> 

<View android:layout_width="fill_parent" 
    android:layout_height="2dip"/> 

<FrameLayout 
    android:id="@android:id/tabcontent" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

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

<!-- Scrollview for message data --> 
<ScrollView android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:scrollbars="vertical" 
    android:id="@+id/formTab"> 

<!-- Form fields are automatically 
    created in McMessageViewActivity. --> 
<LinearLayout android:id="@+id/formLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <View android:layout_width="fill_parent" 
    android:layout_height="5dip"/> 

</LinearLayout> 
</ScrollView> 

</FrameLayout> 

</LinearLayout> 

<RelativeLayout android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">  
<LinearLayout android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:layout_alignParentBottom="true" > 
    <Button android:text="Send" 
     android:id="@+id/btnSend" android:layout_weight="1" 
     android:layout_height="wrap_content" android:layout_width="0px"/> 
</LinearLayout> 
</RelativeLayout> 

</TabHost> 

추가 탭 레이아웃 :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/detailsTab"> 

    <TableLayout android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:stretchColumns="1"> 

     <View android:layout_width="fill_parent" 
      android:layout_height="10dip"/> 

     <TableRow> 
      <TextView 
       android:text="Unit #" 
       android:textStyle="bold" 
       android:gravity="right" 
       android:padding="3dip" /> 
      <Spinner android:id="@+id/unitNumber" 
       android:text="" 
       android:padding="3dip" 
       android:layout_marginRight="2sp"/> 
     </TableRow> 
     <TableRow> 
      <TextView 
       android:text="User ID" 
       android:textStyle="bold" 
       android:gravity="right" 
       android:padding="3dip" /> 
      <EditText android:id="@+id/userId" 
       android:text="" 
       android:padding="3dip" 
       android:layout_marginRight="2sp" /> 
     </TableRow> 
     <TableRow> 
      <TextView 
       android:text="Form #" 
       android:textStyle="bold" 
       android:gravity="right" 
       android:padding="3dip" /> 
      <Spinner android:id="@+id/formNumber" 
       android:text="" 
       android:padding="3dip" 
       android:layout_marginRight="2sp" /> 
     </TableRow> 
     <TableRow> 
      <TextView 
       android:text="Sending status" 
       android:textStyle="bold" 
       android:gravity="right" 
       android:padding="3dip" /> 
      <EditText android:id="@+id/sendingStatus" 
       android:text="" 
       android:padding="3dip" 
       android:layout_marginRight="2sp"/> 
     </TableRow> 
     <TableRow> 
      <TextView 
       android:text="Delivery priority" 
       android:textStyle="bold" 
       android:gravity="right" 
       android:padding="3dip" /> 
      <EditText android:id="@+id/priority" 
       android:text="" 
       android:padding="3dip" 
       android:layout_marginRight="2sp"/> 
     </TableRow> 
     <TableRow> 
      <TextView 
       android:text="Request reply" 
       android:textStyle="bold" 
       android:gravity="right" 
       android:padding="3dip" /> 
      <CheckBox android:id="@+id/requestReply" 
       android:padding="3dip" 
       android:layout_marginRight="2sp" /> 
     </TableRow> 
     <TableRow> 
      <TextView 
       android:text="Receipt conf" 
       android:textStyle="bold" 
       android:gravity="right" 
       android:padding="3dip" /> 
      <CheckBox android:id="@+id/receiptConfirmation" 
       android:padding="3dip" 
       android:layout_marginRight="2sp" /> 
     </TableRow> 

    </TableLayout> 

</LinearLayout> 

답변

7

귀하의 주요 문제는 TabHost는 FrameLayout이 확장 때문이다. 그래서 메인 레이아웃에서 마지막 RelativeLayout을 사용했습니다. 당신은 속이려고했는데 잃어 버렸습니다 ... :)

당신이해야 할 일은 TabHost에 고유 한보기 (예 : RelativeLayout)를 넣은 다음 다른 모든보기를 안에 넣는 것입니다. 다음과 같은

뭔가 (나는 내 ​​컴퓨터에 작업을 얻을 수 <includes /> 및 배경 일부를 제거했다) :

<?xml version="1.0" encoding="utf-8"?> 
<TabHost 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:padding="5dp"> 
     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" /> 
     <View 
      android:id="@+id/separator" 
      android:layout_below="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="2dip" /> 
     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_below="@+id/separator" 
      android:layout_above="@+id/btnSend" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
      <!-- Scrollview for message data --> 
      <ScrollView 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:scrollbars="vertical" 
       android:id="@+id/formTab"> 
       <!-- 
        Form fields are automatically created in 
        McMessageViewActivity. 
       --> 
       <LinearLayout 
        android:id="@+id/formLayout" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:orientation="vertical"> 
        <View 
         android:layout_width="fill_parent" 
         android:layout_height="5dip" /> 
       </LinearLayout> 
      </ScrollView> 
     </FrameLayout> 
     <!-- Unnecessary  <LinearLayout--> 
     <!--   android:layout_height="wrap_content"--> 
     <!--   android:layout_width="fill_parent"--> 
     <!--   android:layout_alignParentBottom="true">--> 
     <Button 
      android:layout_alignParentBottom="true" 
      android:text="Send" 
      android:id="@+id/btnSend" 
      android:layout_weight="1" 
      android:layout_height="wrap_content" 
      android:layout_width="fill_parent" /> 
     <!--  </LinearLayout>--> 
    </RelativeLayout> 
</TabHost> 
+0

당신은 내 영웅이되었다. 고맙습니다! –

+0

17 번 라인에 오타가 있습니다. – Javide

+0

@ javid : 고마워요 :) – OcuS

관련 문제