2011/02/28 0 コメント

Android - メニューの表示

メニューを作成した場合はいかのようにすればOK


こんな感じです


// メニューの設定
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    menu.add(0 , Menu.FIRST , Menu.NONE , "MENU1").setIcon(アイコン);
    menu.add(0 , Menu.FIRST + 1 , Menu.NONE , "MENU2").setIcon(アイコン);
    menu.add(0 , Menu.FIRST + 2 , Menu.NONE , "MENU3").setIcon(アイコン);
    return true;
}

// メニューが押された場合
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    boolean ret = true;
    Intent intent = new Intent();
    switch (item.getItemId()) {
        case Menu.FIRST:
            // 項目IDが Menu.FIRST のものを押された際の処理
            break;
        case Menu.FIRST + 1:
            // 項目IDが Menu.FIRST + 1 のものを押された際の処理
            break;
        case Menu.FIRST + 2:
            // 項目IDが Menu.FIRST + 2 のものを押された際の処理
            break;
        }
    return ret;
}




ちなみに, menu.add(int groupId, int ItemId, int order, CharSequence title); の順番
Menu.NONE (= 0)をorderに指定した場合は, addをした順番でメニューに表示されます。

また, Androidで表示できるメニュー数は6つまでとなっていて、ここで7つ以上のメニューを設定した場合は, 1~5番目の項目に加えて「MORE」という項目が加わったメニューが表示され、MOREをタップすると, 残りの6番目以降の項目が表示されると言った形になります。

2011/02/27 0 コメント

Android - 固定ヘッダー付きのListView - その1

固定ヘッダー付きのListViewを使用する場合 (Webページでいう position:fixed; のヘッダー)

ヘッダーに 「Left Button」「Center Button」「Right Button」を配置した場合は以下のようにすればOK

こんな感じになります。(スクロールしても、ヘッダーの部分は固定です。)


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 >
 <LinearLayout
  android:id="@+id/header_menu"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
     android:orientation="horizontal"
  >
  <Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Left Button"
   />
  <Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Center Button"
   android:layout_weight="1"
   />
  <Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Right Button"
   />
 </LinearLayout>
 <ListView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:id="@+id/ListViewSample"
  android:layout_below="@id/header_menu"
  >
 </ListView>
</RelativeLayout>


フッターもつけたい場合は,
http://blog.maxaller.name/2010/05/attaching-a-sticky-headerfooter-to-an-android-listview/
を参考にするとよし。
0 コメント

MacローカルでSVN - subversive (eclipse) 導入

eclipseにsubversiveプラグインを入れて, SVN環境を整えました。
そのときの導入方法まとめ

① eclipseメニューから, 「ヘルプ -> 新規ソフトウェアのインストール」
② http://download.eclipse.org/technology/subversive/0.7/update-site/ を指定
③ Subversive 統合プラグイン (インキュベーション) と Subversive SVN チーム・プロバイダー・プラグイン (インキュベーション) を選択 (Subversive ソース (インキュベーション)は今回導入していません)
④ 上記のプラグインをインストール

これで, Eclipseへのインストールは完了.
次に, Macローカルにリポジトリを作成します。リポジトリは, /Users/ユーザー名/svn に作成する事とします。

① まずリポジトリとなるsvnディレクトリを作成 (mkdir /Users/ユーザー名/svn)
② /usr/bin/svnadmin create /Users/ユーザー名/svn を実行し, リポジトリを作成
③ このパスをEclipseで設定 (プロジェクト名の上, 等で右クリックメニュー -> チーム -> プロジェクトの共有)
④ リポジトリのパスに, file:///Users/ユーザー名/svn を指定

これで完了。subversiveが使えます。
2011/02/26 0 コメント

Android - ListViewにTextViewとCheckboxを配置

< 問題点 >
ListView上にTextViewを配置した場合, その項目上をタップすると, ListViewのクリックイベントが発生する。
これは良いのだが、TextViewだけでなく, ListViewにTextViewと「Checkbox」を配置した場合、テキストの部分(TextView)をタップしても反応しなくなってしまう。(チェックボックスの方にフォーカスが移ってしまっていて, チェックボックスしか反応しなくなる、)

<解決法>
そこで, チェックボックスに対してのタップイベントもListViewに対するイベントも両方独立して使用可能にするには, Checkboxに対して

android:focusable="false"
android:focusableInTouchMode="true"

を設定してあげれば良いらしい。
2011/02/25 0 コメント

Android - ArrayAdapterメモ

ArrayAdapterは, 指定した1つの TextView に対してテキストをセットするためのAdapterとのこと。

http://d.hatena.ne.jp/androidprogram/20100703/1278112044 のサイトがとても分かりやすく解説してくれていた。


つまり, 複数のTextViewに対しては操作できない!ということである。
もし複数のTextView等に対して操作したい場合は, ArrayAdapterを拡張する必要があるっぽい。

拡張したい場合は以下のサイトを参考にさせていただいた。
http://isakado.blog106.fc2.com/category0-1.html
2011/02/20 0 コメント

Android - Error generating final archive: Debug certificate expired on ...

突然 Error generating final archive: Debug certificate expired on ...
というエラーでデバッグできなくなってしまった。これはkeystoreの有効期限が問題らしく

http://magpad.jugem.jp/?eid=151

を参考にさせていただき、解決できました。
 
;