sul bordo superiore FrameLayout quando si utilizzano schede
-
11-10-2019 - |
Domanda
Ho uno schermo che usi le schede in mia applicazione Android. C'è una linea (come un confine) che mostra tra la TabWidget e framelayout. Voglio sbarazzarsi di quella linea, ma cant sembrano trovare quello che è. Ho determinato che è parte del FrameLayout impostando la sua visibilità a scomparsa. Si prega di fare riferimento al codice qui sotto:
<?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:background="#fb8c10"
>
<ImageView
android:id="@+id/img_confirm_header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/confirm_header"
/>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="0dip"
android:background="#fb8c10"
android:tabStripEnabled="false"
/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/tab_bg"
/>
</LinearLayout>
</TabHost>
Questo è un collegamento del layout attuale e quello che sto cercando di fare http://img441.imageshack.us/g/screenshot20110116at513.png/
Il layout arancione è la mia app, e il grigio è quello che sto cercando di fare.
Si noti come nella figura grigio la scheda fluisce nel telaio.
Ci scusiamo per i link, non posso ancora immagini pubblicare: p
Grazie!
Soluzione
sono riuscito a risolvere questo manipolando l'indice z utilizzando la layout relativo. Sono stato in grado di posizionare le linguette leggermente sopra il layout del frame. Fare riferimento al codice qui sotto:
<?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:background="#fb8c10"
>
<ImageView
android:id="@+id/img_confirm_header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/tab_header"
/>
<RelativeLayout
android:id="@+id/widget77"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent"
>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent"
android:layout_marginTop="33dip"
/>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#fb8c10"
android:tabStripEnabled="true"
android:layout_above="@android:id/tabcontent"
android:layout_marginBottom="40dip"
/>
</RelativeLayout>
</LinearLayout>
</TabHost>
Altri suggerimenti
Poco fa mi sono imbattuto in questo problema. Tuttavia, ho anche provato a rimuovere il bordo superiore del FrameLayout. L'ho fatto. ma io non credo che sia un modo per rimuovere il bordo superiore. in ogni caso FYI,
Il posto giusto un TextView con sfondo bianco sul bordo e utilizzare AbsoluteLayout.
Esempio:
<AbsoluteLayout>
<TabHost
android:layout_x="0dip"
android:layout_y="5dip" ...>
<AbsoluteLayout android:padding="5dip" android:background="#ffffff">
<TabWidget/>
<FrameLayout ....
android:layout_x="0dip" android:layout_y="65dip" />
</AbsoluteLayout>
</TabHost>
<TextView
android:layout_width="fill_parent" android:layout_height="25dip"
android:layout_x="0dip" android:layout_y="65dip"
android:background="#ffffff"/>
</AbsoluteLayout>