TextView 의 폰트 사이즈는 기본이 SP 이다. setTextSize를 할 때, 첫번째 인자에 SP타입 상수를 기입하면 SP로 사용할 수 있다.
TextView tv = (TextView)findViewById(R.id.tv);
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 9);

//Pixel 단위
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.typo14));

'안드로이드' 카테고리의 다른 글

MODE_PRIVATE  (0) 2015.01.08
Fragment onCreateView inflate Exception  (0) 2014.12.26
InputStream > Byte Array  (0) 2014.07.17
Bitmap Round  (0) 2014.06.05
ViewPager  (0) 2014.05.15
Posted by 자바리즘
,

HTML 색상표

2014. 10. 1. 14:52

http://html-color-codes.info/

'' 카테고리의 다른 글

자바스크립트 코딩가이드  (0) 2014.11.27
Posted by 자바리즘
,

최근에 4.0 기반으로 제작된 앱을 2.3.x 에서도 지원하라는 말이 있었다.


이미 4.0(이하 아이스크림샌드위치) 으로 개발된 터라 진저브레드(이하 진저브레드) 에서 구동이 될려면 몇가지 손을 봐야했다.


ActionBar 가 말썽이었는데, 자세한 스펙은 안드로이드 개발자 사이트에서 확인해보면 된다.


http://developer.android.com/tools/support-library/setup.html



일단, 이 Library를 사용하려면 Import를 해야하는데, 이클립스의 Android SDK Manager 에서 Android Support Library 항목을 다운로드 받아야 한다.



다운로드 하면 SDK를 받은 Directory 에 v7 라이브러리가 보인다. 그런데 이 jar 파일을 build path 에서 설정하고 사용하려니 잘 되지 않았다.

그래서 검색을 한 결과, 이 방법도 있었다.

Android Sample Project 로 만들면, appcompat_v7 소스를 자동으로 매칭 시켜 준다.





저렇게 나온 라이브러리 소스를 내가 사용할 프로젝트에 넣어준다.




ActionBar를 사용할 때는 아래와 같이 ActionBarActivity 를 상속받아서 사용하면 된다.




기존에 Activity를 상속받은 클래스라면 ActionBarActivity를 상속받는 클래스를 새로 만들어서 버전에 맞게 분기 처리해주면 될것 이다.





GingerBread(진저브레드) 에서 APP 이 구동될려면 매니페스트 설정도 필요하다.

아래와 같이 minSdkVersion을 10 으로 맞춰주어야 한다.





어찌어찌 해보긴 해서, 되긴 했는데...

다시 지원안해도 된다라는 지시가 있어서...

결국은 나중을 위해 내비두었다.

언젠간 쓰겠지...

Posted by 자바리즘
,
뜻하지 않게, ScrollView 안에 ListView 등의 리스트 형식의 Element를 넣어야 할 때가 있다. 안드로이드 권고사항은 아니지만, UI 를 이렇게 설계했다면 어쩔 수 없이 넣어야 하는데. (개인적인 생각으로는 이런 UI는 지양한다. 대체 누가 이렇게 설계하는거야 -_-^ 짱나게) 암튼, 그럼에도 방법은 있다. ScrollVIew 의 속성중에 android:fillViewport="true" 로 속성을 주고, Java code단에서 아래와 같은 메소드를 작성해주고 호출해준다.
public static void setListViewHeightBasedOnChildren(ListView listView) {
    ListAdapter listAdapter = listView.getAdapter();
    if (listAdapter == null) {
       // pre-condition
       return;
    }
 
    int totalHeight = 0;
    int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST);
    
    for (int i = 0; i < listAdapter.getCount(); i++) {
        View listItem = listAdapter.getView(i, null, listView);
        listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
        totalHeight += listItem.getMeasuredHeight();
    }
 
    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    listView.setLayoutParams(params);
    listView.requestLayout();
}
이 메소드를 listview의 setApdater 직 후에 넣어준다. ExpandableListView 의 경우는 setAdapter 직 후에 넣어주고, setOnGroupClickListener 를 선언하고, onGroupClick 안에서 한번 더 호출해준다.
expandableListView.setOnGroupClickListener(new OnGroupClickListener() {
						
	@Override
	public boolean onGroupClick(ExpandableListView parent, View v,  int groupPosition, long id) {
		setExpandableListViewHeight(parent, groupPosition);
							
			return false;
	}
});

'안드로이드 > Component' 카테고리의 다른 글

ConstraintLayout -2 체인  (0) 2017.06.20
Constraint Layout -1  (0) 2017.06.19
ListView Background Selector  (0) 2015.03.20
안드로이드 ViewPager 및 Fragment ActionBar  (0) 2014.08.27
EditText 글자수 제한  (0) 2014.07.17
Posted by 자바리즘
,
안녕하세요. 오늘은 개발하다 알게된 사소한 것들을 블로깅 해봅니다. ViewPager 를 한번만 로딩하고 싶을 때는 ViewPager에서 제공하는 setOffscreenPageLimit 라는 함수를 사용하면 됩니다.

ViewPager _viewPager  = (ViewPager)findViewById(R.id.viewPager);
_viewPager.setOffscreenPageLimit(3);

예를 들면 3이라고 셋팅하면 페이지3개를 미리 로딩하겠다는 의미 입니다. 물론 Fragment 가 3개 있어야 겠죠? 그리고, Fragment 가 바뀔 때마다 ActionBar의 Item을 바꾸고 싶을 때가 있는데요. 저 같은 경우는 CustomActionBar 여서 고생을 좀 했습니다^^; Main FragmentActivity 에서 바꿀려다 보니 죽어라 해도 안바뀌더군요. viewpager의 getCurrentItem. 이 함수에 엄청 속았는데요. 현재 item을 가져오질 않아요 ㅠㅠ 여러 페이지가 있을 경우 지 멋대로 더군요. 그래서 선택한 것이 Fragment를 상속받은 class 의 onCreateView 에서

setHasOptionMenus(true);

이렇게 설정하시고 onCreateOptionsMenu 를 오버라이드 합니다. 그리고 여기서 보여주고싶은 item을 visibility를 VISIBLE로 설정합니다. Fragment의 경우 FragmentActivity 가 Parent 인데, 아래와 같이 사용해서 FragmentActivity를 상속받는 클래스를 받아옵니다.

ParentFragmentActivity activity = (ParentFragmentActivity)getActivity();

이런식으로 받아오는 것이죠. 이상입니다.
Posted by 자바리즘
,

일단 글만 링크로 공유


http://kwon37xi.egloos.com/4632235

'개발이야기' 카테고리의 다른 글

배우는 법 배우기  (0) 2015.05.19
왜 Interface 를 써야 할까? 2번째  (0) 2015.01.05
이클립스 테마 바꾸기  (0) 2014.04.16
상속은 왜 하나?  (0) 2014.02.20
왜 Interface 를 써야 할까?  (0) 2014.02.20
Posted by 자바리즘
,

올해가 2014년인가..


다시 안드로이드를 할 기회가 생기게 되다니...난 안드로이드와는 땔래야 땔 수 없는 사이인가 ^^;


아이폰 프로그래밍을 처음 배울 때도 그랬고, 사실 아이폰 프로그래밍이 더 하고 싶기도 하고, 아직까지 넘사벽이다.


objective-C 도 매력적인 언어인데, 애플은 이번 WWDC 2014 에서 Swift 라는 언어를 소개했다. (아이폰 개발자에겐 혼란? ^^;;;)


이번 기회에 안드로이드를 다시 재조명하는 기회가 됐으면 좋겠다^^



여러가지 둘러보았다.


SwipeRefreshLayout 이라던지, Actionbar 라든지.

DrawLayout 등등...


다뤄보니 좋네ㅎ

'일상' 카테고리의 다른 글

자기 동기 부여  (0) 2018.06.05
C# Winform 의 시작...  (0) 2014.01.15
Posted by 자바리즘
,