私はこれについていくらかおしゃべりをしましたが、明確なものはありません。画面の下部にTabWidgetのタブを配置する方法はありますか?もしそうなら、どのように?
私は次のことを試しましたが、うまくいきませんでした:
a)tablaydgetをframelayoutの下に設定する
b)タブウィジェットの重力を「下」に設定する
ありがとう!ラッパール
以下は、画面の下部にタブを表示するための、最もシンプルで堅牢でスケーラブルなソリューションです。
layout_height
をwrap_content
に設定しますAndroid:layout_weight="1"
を設定しますAndroid:layout_weight="0"
を設定します(0がデフォルトですが、強調、読みやすさなどのため)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のような外観にすることもできます。
ここに私が今取り組んでいるもののスクリーンショットがあります。私はまだやるべき仕事があります。主にアイコンのセレクターを作成し、水平方向の均等な分布を確保しますが、アイデアは得られます。私の場合、フラグメントを使用していますが、同じプリンシパルが標準のタブビューに適用されるはずです。
<?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>
TabWidgetの区切り線を削除しようとするすべての人のために、ここにサンプルプロジェクト(およびそれぞれのチュートリアル)があります。これらはタブをカスタマイズし、タブが最下部にある場合の問題を削除するのに最適です。 Eclipseプロジェクト: Android-custom-tabs ;元の説明: blog ;これが役に立てば幸いです。
Androidのすべてのバージョン(特にカスタムUIのもの)で機能するかどうかはわかりませんが、追加することで下部の灰色のバーを削除できました
Android:layout_marginBottom="-3dp"
tabWidget XMLへ...
これはまさにあなたが探しているものではないかもしれません(画面の下部にタブを送信する「簡単な」ソリューションではありません)が、それでも私はあなたにフラグを立てたい興味深い代替ソリューションです:
ScrollableTabHost はTabHostのように動作するように設計されていますが、より多くの項目に合わせてスクロールビューが追加されています...
このオープンソースプロジェクトを掘り下げると、あなたの質問に対する答えが見つかるでしょう。もっと簡単なものがあれば、また戻ってきます。
はい、参照してください: link 、しかし、彼は新しいタブを作成するためにアクティビティではなくxmlレイアウトを使用したので、彼のxmlコード(FrameLayoutのpaddingTopを0pxに設定)を入れてコードを記述します:
public class SomeActivity extends ActivityGroup {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tab_Host = (TabHost) findViewById(R.id.edit_item_tab_Host);
tab_Host.setup(this.getLocalActivityManager());
TabSpec ts1 = tab_Host.newTabSpec("TAB_DATE");
ts1.setIndicator("tab1");
ts1.setContent(new Intent(this, Registration.class));
tab_Host.addTab(ts1);
TabSpec ts2 = tab_Host.newTabSpec("TAB_GEO");
ts2.setIndicator("tab2");
ts2.setContent(new Intent(this, Login.class));
tab_Host.addTab(ts2);
TabSpec ts3 = tab_Host.newTabSpec("TAB_TEXT");
ts3.setIndicator("tab3");
ts3.setContent(new Intent(this, Registration.class));
tab_Host.addTab(ts3);
tab_Host.setCurrentTab(0);
}
}
画面の下部に配置しようとすると、Androidタブで同じ問題が発生していました。私のシナリオは、レイアウトファイルを使用せずにコードでタブを作成することでした。また、他のアプローチを使用すると少し複雑すぎると思われる各タブからアクティビティを起動することも考えていました。
安定した作業のためにこのコードを使用することをお勧めします。タブ内のネストされたフラグメント(ネストされたMapFragmentなど)に対して最適化され、「アクティビティを保持しない」でテストされます: https://stackoverflow.com/a/23150258/2765497