View上のEditTextを取得
findViewByIdの引数にはリソースIDを渡す
戻り値はViewオブジェクトである為、対応するクラスでキャストする必要があるandroid.app.Activity.findViewById(int id)
EditText edittext = (EditText)findViewById(R.id.edittext);
Cursorをループして値を取得
while (cursor.moveToNext()) { System.out.println(cursor.getString(ColumnIndex)); }
年月のみのDatePicker
* 方法1 | DatePickerDialogを利用し、DatePickerの日付部分を非表示にする | DatePickerDialog.getDatePickerはAPI11以上でしか使えない | DatePickerDialogで日付を変更すると、年月日がタイトルへ反映される
import java.util.Calendar; import android.widget.DatePicker; import android.app.DatePickerDialog; ~ (The rest is ommited.) Calendar calendar = Calendar.getInstance(); //今日の日付を初期設定するため DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int day) { //DatePickerDialogで日付選択後、完了された } }, calendar.get(calendar.YEAR), calendar.get(calendar.MONTH) + 1, calendar.get(calendar.DATE)); //月は0~11なので+1する //DatePickerDialogのDatePickerから日付ViewのリソースIDを取得する int dayId = datePickerDialog.getDatePicker().getResources().getIdentifier("day", "id", "android"); //日付Viewのインスタンスを取得してsetVisibilityメソッドで非表示にする datePickerDialog.getDatePicker().findViewById(dayId).setVisibility(View.GONE); //DatePickerDialogのタイトルはデフォルトで年月日になっているので変えておく datePickerDialog.setTitle(R.string.title); //これは関係ない CalendarとSpinnerの表示設定(デフォルト設定のまま) datePickerDialog.getDatePicker().setSpinnersShown(true); datePickerDialog.getDatePicker().setCalendarViewShown(false); //これは関係ない DatePickerの日付を設定する datePickerDialog.getDatePicker().updateDate(2000, 11, 12); //2000年12月12日 datePickerDialog.show(); //DatePickerDialogを表示する
* 方法2 | DatePickerの日付部分を非表示にし、AlertDialogで表示する
import java.util.Calendar; import android.app.AlertDialog; import android.widget.DatePicker; import android.content.DialogInterface; ~ (The rest is ommited.) Calendar calendar = Calendar.getInstance(); //今日の日付を初期設定するため //表示に使用するAlertDialog AlertDialog.Builder builder = new AlertDialog.Builder(this); DatePicker datePicker = new DatePicker(this); //DatePickerから日付ViewのリソースIDを取得する int dayId = datePicker.getResources().getIdentifier("day", "id", "android"); //日付Viewのインスタンスを取得してsetVisibilityメソッドで非表示にする datePicker.findViewById(dayId).setVisibility(View.GONE); //AlertDialogのViewにDatePickerを設定 builder.setView(datePicker); //AlertDialogのタイトルを設定 builder.setTitle(R.string.title); builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface di, int w) { //AlertDialogで日付選択後、完了された } }); //キャンセルボタンの設定(第二引数はClickListener) builder.setNegativeButton(R.string.cancel, null); //AlertDialogの表示 builder.create(); builder.show()
ActionBarを下部に表示する
* 方法1 | アプリケーション最上層のViewからActionBarを取得し、 | Viewの末尾に追加し直す事で、画面の下部に移動させる | この方法だと、上部に表示されるべきActionBarが下部に表示される為、 | SplitActionBarで実現できるアイコンボタンの均等割が効かない | ※上部ActionBarはItemを右詰めで配置していく | -> 上部ActionBarで均等割り配置する方法があるか? | ※下部ActionBarは表示できるだけのItemを均等割りで配置する
public static <T extends View> List<T> findViewsWithClass(View v, Class<T> class) { List<T> views = new ArrayList<T>(); findViewsWithClass(v, class.getName(), views); return views; } public static List<View> findViewsWithClassName(View v, String className) { List<View> views = new ArrayList<View>(); findViewsWithClass(v, className, views); return views; } private static <T extends View> void findViewsWithClass(View v, String class, List<T> views) { if (v.getClass().getName().equals(class)) { views.add((T) v); } if (v instanceof ViewGroup) { ViewGroup g = (ViewGroup) v; for (int i = 0; i < g.getChildCount(); i++) { findViewsWithClass(g.getChildAt(i), class, views); } } } public final static void actionBarUpsideDown(Activity activity) { View root = activity.getWindow().getDecorView(); View firstChild = ((ViewGroup) root).getChildAt(0); if (firstChild instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) firstChild; List<View> views findViewsWithClassName(root, "com.android.internal.widget.ActionBarContainer"); if (!views.isEmpty()) { for (View vv: views) { viewGroup.removeView(vv); } for (View vv: views) { viewGroup.addView(vv); } } } } ~ (The rest is ommited.) //Activity起動時に呼び出す actionBarUpsideDown(this);
* 方法2 | splitActionBarWhenNarrowでActionBarを分割して、上部のActionBarを消す方法 | この方法だと、分割されたActionBarの内、上部ActionBarのみを削除する事で、 | 均等割り機能を持つ下部ActionBarだけを表示する事が可能 | しかし、画面横幅が480dp以上ある端末の場合、ActionBarは分割されない
AndroidManifest.xml
<activity android:uiOptions="splitActionBarWhenNarrow" >
方法1のactionBarUpsideDownメソッドを修正
public final static void actionBarUpRemove(Activity activity) { View root = activity.getWindow().getDecorView(); View firstChild = ((ViewGroup) root).getChildAt(0); if (firstChild instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) firstChild; List<View> views findViewsWithClassName(root, "com.android.internal.widget.ActionBarContainer"); if (!views.isEmpty()) { for (View vv: views) { viewGroup.removeView(vv); //上部ActionBarを削除したら、ループを抜ける break; //ここを変更 } } } }
* 方法3(未検証) | ActionBarにCustomViewを設定して、ボタンを表示する
Created
February 7, 2014 04:30
-
-
Save yukpiz/fab45ff49af1ece3cc23 to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment