2012年10月14日日曜日

AndroidのtabGroup位置の変更(Titanium)

  • このエントリーをはてなブックマークに追加

Titaniumでアプリ開発をする際にネックとなるところとしては、
iPhoneの場合とAndroidの場合で見た目が変わってしまう部分があるところ。
特にtabGroupがAndroidの場合では上部に表示がされ、デザイン的にもなんだかなってなってしまう。
そこで今回はそのなんだかなを解消するための方法。

Android開発をしたことがあるならばわかるけれども、
基本的なパーツの配置というのはxmlで制御が可能。
Titaniumもその機能をカバーしてるのでそれを使ってあげればよいだけ。

■手順
1:(projectフォルダ)/platform/android/res/layout/というフォルダを作成。
2:(projectフォルダ)/build/android/res/layout/titanium_tabgroup.xmlを1のlayoutフォルダに入れる。
3:titanium_tabgroup.xmlを開く。
変更前:

<?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="0dp">
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="0dp" />
    </LinearLayout>
</TabHost>
4:以下に変更
<?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="0dp">
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="0dp"
            android:layout_weight="1" />
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0" />
    </LinearLayout>
</TabHost>
という手順で見事下側にtabが来ている。

※注意点
FrameLayoutとTabWidgetの記述順序を変更しないといけないというのが要注意。
というかそもそも日本語でこれに書いているものはほとんどないけれども、
書いてあってもFrameLayoutにandroid:layout_weight="1"と設定すればよいとしか書いてなかった。
たまたま自分のソースではTabWidgetが前に来ていただけかもしれないが、
こういう細かいところも出来たら書いてあったらいいのになって思った。

Adsense