1월, 2013의 게시물 표시

[토스트] 간단히 보여주기

토스트는 정말 간단히 표시할 수 있지만, show()를 빼먹으면 고생하다는... Toast.makeText(this, "some text", Toast.LENGTH_SHORT).show(); 잊지말자! show()!

[소프트키보드] 보여주기 & 숨기기

소프트 키보드를 숨기거나 보여주는 방법 보여주기 EditText editText = (EditText) findViewById(R.id.myEdit); InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); // only will trigger it if no physical keyboard is open mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); 숨기기 InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);

[대화상자] 대화상자에 웹뷰 장착, 그리고 3버튼

3버튼 대화상자를 만드는 방법. 컨텐츠는 웹뷰를 지정하고, 2개의 버튼은 마켓링크, 마지막 버튼은 그냥 닫기. WebView webView = new WebView(this); webView.loadUrl(getString(R.string.lite_alert_message_url)); new AlertDialog.Builder(PrefActivity.this) .setTitle(R.string.lite_alert_title) .setView(webView) .setIcon(R.drawable.icon) .setPositiveButton(R.string.lite_alert_pos, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { try { startActivity(Intent.parseUri("market://search?q=pub:Elex", 0)); } catch (URISyntaxException e) { e.printStackTrace(); } } }) .setNeutralButton(R.string.lite_alert_neu, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { try { startActivity(Intent.parseUri("market://search?q=pub:Elex", 0)); } catch (URISyntaxException e) { e.printStackTrace(); } } }) .setNegativeButton(R.string.lite_al

[View] 뷰의 크기 문제

액티비티의 onCreate() 메서드 등에서 암만 view.getWidth() 등을 써봐야 말짱 도루묵이다. 이는 뷰가 아직 그려지지 않았기 때문이다. 그렇다면 어찌해야 하는가. 뷰의 post() 메서드를 이용하자. view.post(new Runnable() { @Override public void run() { if (view.getWidth() < view1.getWidth()*10) { view1.setVisibility(View.GONE); } } }); post() 메서드는 잠시 기다렸다가 UI 스레드에서 Runnable을 실행하란 얘기다.

[View] 뷰에 레이아웃 전개하기

뷰에 레이아웃을 전개하는 코드이다. LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View listItem = li.inflate(R.layout.listitem, parent, false);

[View] onMeasure

특별한 경우가 아니라면 다음의 onMeasure함수를 그대로 적용해도 무방하다. @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int wMode, hMode, wSpec, hSpec; int width=320, height=320; wMode = MeasureSpec.getMode(widthMeasureSpec); hMode = MeasureSpec.getMode(heightMeasureSpec); wSpec = MeasureSpec.getSize(widthMeasureSpec); hSpec = MeasureSpec.getSize(heightMeasureSpec); switch(wMode) { case MeasureSpec.AT_MOST: width = wSpec; break; case MeasureSpec.EXACTLY: width = wSpec; break; case MeasureSpec.UNSPECIFIED: break; } switch(hMode) { case MeasureSpec.AT_MOST: height = hSpec; break; case MeasureSpec.EXACTLY: height = hSpec; break; case MeasureSpec.UNSPECIFIED: break; } setMeasuredDimension(width, height); }

[SharedPreferences] 설정을 저장하고 불러오기

프레퍼런스는 간단한 설정값을 저장하기 위한 XML 파일이다. 프레퍼런스에서 불러오기 SharedPreferences pref = getSharedPreferences("settings", MODE_PRIVATE); int val = pref.getInt("intVal", 0); 프레퍼런스에 저장하기 SharedPreferences.Editor edit = getSharedPreferences("settings", MODE_PRIVATE).edit(); edit.putInt("intVal", val); edit.commit();

[Package] 버전 네임

매니페스트에 정의된 버전네임을 가져오는 방법. String version; try { PackageInfo i = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); version = i.versionName; } catch(NameNotFoundException e) { }

[Menu] onCreateOptionsMenu

장치의 메뉴 버튼을 눌렀을 때 XML로 정의된 옵션 메뉴를 표시해 주는 코드는 대부분의 경우에 별다른 수정없이 적용될 수 있다. @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); return true; }

[EditText] 키보드 닫아 놓고 시작하기

액티비티 생성시에 액티비티에 에딧텍스트가 있으면 포커스가 에딧텍스트로 이동해 버린다. 에딧 텍스트가 포커스를 받았으니 키보드가 열릴 것이다. 이것이 기본 동작이다. 에딧텍스트가 맨 앞의 컴포넌트라면 별 상관 없겠지만 긴 화면의 중간 어디 쯤에 있는 컴포넌트라면 의도와는 다르게 로딩하자마자 스크롤까지 되어 버린다. 이런 때에는 다음의 소스를 적용할 수 있다. 에딧텍스트가 포커스를 받게 된 후에야 키보드가 펼쳐질 것이다. 엔터 키(확인)를 입력 받으면 키패드가 닫힌다. eText = (EditText) findViewById(R.id.e_text); if (eText !=null) { eText.setText(this.txtValue); eText.setInputType(InputType.TYPE_NULL); eText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { eText.setInputType(InputType.TYPE_CLASS_TEXT); InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.showSoftInput(eText, 0); eText.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER) { InputMethodManager i