[android] Android : BOTTOM의 탭

나는 이것에 대해 약간의 대화를 보았지만 명확한 것은 없습니다. TabWidget의 탭을 화면 하단에 배치하는 방법이 있습니까? 그렇다면 어떻게?

다음을 시도했지만 작동하지 않았습니다.

a) 프레임 레이아웃 아래에 탭 위젯
설정 b) 탭 위젯의 중력을 “아래쪽”으로 설정

감사! llappall



답변

화면 하단에 탭을 표시하는 가장 간단하고 강력하며 확장 가능한 솔루션입니다.

  1. 수직 LinearLayout에서 FrameLayout을 TabWidget 위에 놓습니다.
  2. 설정 layout_heightwrap_contentFrameLayout이와 TabWidget 모두
  3. FrameLayout의 설정 android:layout_weight="1"
  4. TabWidget 설정 android:layout_weight="0"(0은 기본값이지만 강조, 가독성 등)
  5. TabWidget을 설정하십시오 android:layout_marginBottom="-4dp"(하단 분배기를 제거하기 위해)

전체 코드 :

<?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">

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

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:layout_weight="1"/>

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:layout_marginBottom="-4dp"/>

    </LinearLayout>

</TabHost>


답변

시도해보십시오.) 스크롤 할 때 처리 방법을 모르기 때문에 FrameLayout (@ id / tabcontent)의 내용을 봅니다. 내 경우에는 ListView를 탭의 내용으로 사용했기 때문에 작동합니다. . 🙂 그것이 도움이되기를 바랍니다.

<?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">
        <FrameLayout android:id="@android:id/tabcontent"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:layout_alignParentTop="true"
             android:layout_above="@android:id/tabs" />
    <TabWidget android:id="@android:id/tabs"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:layout_alignParentBottom="true" />
    </RelativeLayout>
</TabHost>


답변

줄을 제거하는 방법이 있습니다.

1)이 튜토리얼을 따르십시오 :
android-tabs-with-fragments

2) 그런 다음 Leaudro가 위에서 제안한 RelativeLayout 변경 사항을 적용하십시오 (레이아웃 소품을 모든 FrameLayouts에 적용하십시오).

항목 # 1의 tab.xml에 ImageView를 추가하고 탭과 같은 모양의 iPhone을 얻을 수도 있습니다.

여기 내가 지금하고있는 일의 스크린 샷이 있습니다. 나는 여전히 아이콘을 선택하고 수평 분포를 동일하게 유지하기 위해 할 일이 있지만 아이디어를 얻습니다. 필자의 경우 조각을 사용하고 있지만 동일한 주체가 표준 탭보기에 적용되어야합니다.

여기에 이미지 설명을 입력하십시오


답변

모든 버전의 Android (특히 사용자 정의 UI 기능이있는 버전)에서 작동하는지 확실하지 않지만 하단에 회색 막대를 제거 할 수있었습니다.

 android:layout_marginBottom="-3dp"

TabWidget XML로 …


답변

tabWidget의 구분선을 제거하려는 모든 사람들을 위해 여기에 탭을 사용자 정의하고 탭이 맨 아래에있을 때 문제를 제거하는 데 도움이되는 예제 프로젝트 (및 해당 자습서)가 있습니다. 이클립스 프로젝트 : android-custom-tabs ; 원래 설명 : 블로그 ; 이것이 도움이 되었기를 바랍니다.


답변

탭 활동의 맨 아래에 탭을 표시하는 방법에는 두 가지가 있습니다.

  1. 상대 레이아웃 사용
  2. Layout_weight 속성 사용

자세한 내용은 링크를 확인 하십시오 .


답변

<?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" >

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

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="1" />

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:background="#252a31"
            android:tabStripEnabled="false" >
        </TabWidget>
    </LinearLayout>

</TabHost>