--/--/--(--)


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
コメント(-) | トラックバック(-) | --:--:--

2010/07/29(木)


AlertDialogのキャンセルや閉じるイベントのハンドリングは、Dialogクラスのリスナー設定メソッドを使用します。

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
 
public class MyClass extends Activity{
 
 public void myMethod(){
  AlertDialog.Builder bldr = new AlertDialog.Builder(this);
  AlertDialog dialog = bldr.create();
 
  // キャンセル
  dialog.setOnCancelListener(new DialogInterface.OnCancelListener(){
   public void onCancel(DialogInterface dialog){
   }
  });
 
  // 閉じる
  dialog.setOnDismissListener(new DialogInterface.OnDismissListener(){
   public void onDismiss(DialogInterface dialog){
   }
  });
 
  bldr.show();
 }
}

スポンサーサイト
コメント(0) | トラックバック(0) | 12:14:53

2010/07/28(水)


AlertDialogのビューをカスタマイズしたい場合には、ビルダーのsetViewメソッドを使用します。文字フォントくらい簡単にいじれてもいいかなと思うのですが、現状この方法だけのようです。

import android.app.Activity;
import android.app.AlertDialog;
import android.view.LayoutInflater;
import android.widget.LinearLayout;
 
public class MyClass extends Activity{
 
 public void myMethod(){
  // xmlからダイアログのレイアウトを読み込む
  LayoutInflater factory = LayoutInflater.from(this);
  LinearLayout layout = (LinearLayout)factory.inflate(R.layout.dialog,null);
 
  // 動的にダイアログのレイアウトを生成する場合
  // LinearLayout layout = new LinearLayout(this);
  // layout.addView(new Button(this));
 
  AlertDialog.Builder bldr = new AlertDialog.Builder(this);
  bldr.setView(layout);
  bldr.show();
 }
}

コメント(0) | トラックバック(0) | 12:53:17

2010/07/24(土)


ダイアログクラスAlertDialogには、あらかじめ3つのボタンが組み込まれており、インタフェースDialogInterfaceのonClickメソッドの第2引数にて、どのボタンが押されたか取得することができます。

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
 
public class MyClass extends Activity{
 
 public void myMethod(){
  // リスナーの作成
  DialogInterface.OnClickListener lis = new DialogInterface.OnClickListener(){
   public void onClick(DialogInterface dialog,int which){
    switch(which){
     case DialogInterface.BUTTON_POSITIVE:
     case DialogInterface.BUTTON_NEUTRAL:
     case DialogInterface.BUTTON_NEGATIVE:
    }
   }
  };
 
  // ダイアログの作成
  AlertDialog.Builder bldr = new AlertDialog.Builder(this);
  bldr.setTitle("Title");
  bldr.setMessage("Message");
  bldr.setPositiveButton("OK",lis); // 左ボタン
  bldr.setNeutralButton("NG",lis); // 真ん中ボタン
  bldr.setNegativeButton("キャンセル",lis); // 右ボタン
  bldr.create();
  bldr.show();
 }
}

コメント(0) | トラックバック(0) | 14:02:26

2010/07/23(金)


Serializableインタフェースを実装したクラスで、「シリアライズ可能クラスは long 型の static final serialVersionUID フィールドを宣言していません」という警告をなくしたい場合(警告が出ていても特に問題はありません)、警告文通りにserialVersionUIDを宣言します。
serialVersionUIDに指定する数値は、他のSerializableクラスとかぶらなければ、適当に決めて構いません。

import java.io.Serializable;
 
public class MyClass implements Serializable{
 
 private static final long serialVersionUID = 42L;
 
}

コメント(0) | トラックバック(0) | 12:59:57

2010/07/21(水)


Viewコンポーネントを配置する際、マージンやパディングのような余白を指定したい場合は、ViewGroupのsetMargins()やViewのsetPadding()を使用します。

import android.app.Activity;
import android.widget.*;
 
public class MyClass extends Activity{
 
 public void myMethod(){
  int FP = LinearLayout.LayoutParams.FILL_PARENT;
  int WC = LinearLayout.LayoutParams.WRAP_CONTENT;
 
  TextView text = new TextView(this);
  LinearLayout layout = new LinearLayout(this);
  LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(WC,WC);
 
  // マージンの設定 left:5px top:10px right:15px bottom:20px
  params.setMargins(5,10,15,20);
 
  // パディングの設定 left:5px top:10px right:15px bottom:20px
  text.setPadding(5,10,15,20);
 
  layout.addView(text,params);
 }
}

xmlだとこうなります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
>
<TextView android:id="@+id/text"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_marginLeft="5px"
 android:layout_marginTop="10px"
 android:layout_marginRight="15px"
 android:layout_marginBottom="20px"
 android:layout_margin="10px" // すべてに10px
 android:paddingLeft="5px"
 android:paddingTop="10px"
 android:paddingRight="15px"
 android:paddingBottom="20px"
 android:padding="10px" // すべてに10px
/>
</LinearLayout>

コメント(0) | トラックバック(0) | 12:31:44

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。