2012.07.20 14:37

html을 String에 담아 webview에서 load할 수도 있습니다~

 WebView mWebView = (WebView) findViewById(R.id.webview);


 String summary = "<meta http-equiv='Content-Type' content='text/html; charset=utf-16le'>" +

            "<html>" +

            "<body>" +

    "<img src='http://cfile1.uf.tistory.com/image/1353844D4FE2DDE6049EB7'>" +

            "</body>" +

            "</html>";

 mWebView.loadDataWithBaseURL("a", summary, "text/html", "UTF-8", null);


✭ 주의사항 : 

일부 디바이스에서는 .loadUrl이 제대로 먹지 않는 경우가 많습니다. 

그러므로 항상 .loadDataWithBaseURL을 이용해주세요~


신고
Posted by 그린블로그 DEV그린
2012.06.14 14:54
보통 액티비티에 EditText를 선언해놓으면 

기본적으로 포커싱되서 액티비티가 실행되면 자동으로 자판이 올라오게 되어있습니다.

이것을 조작하는 방법을 알아보겠습니다.

먼저 간단히, 그냥 onCreate()에서 자판이 올라오지 않게 하려면 


AdroidMenifast.xml에 등록해놓은 Activity 애트리뷰트에 


android:windowSoftInputMode="stateHidden|adjustPan"


속성만 주시면 됩니다.



하지만 한 액티비티에서 어떤 경우엔 자판이 올라와야 하고 어떤 경우엔 안올라오게 해야한다면?


위의 속성 그대로에 EditText에 클릭 이벤트를 준 후 


그 이벤트에 InputMethodManager를 이용하여 자판을 띄우면 쉬울 것이라 생각하기 쉽습니다.


ex Fail)


EditText testEdt;

...

testEdt = (EditText)findViewById(R.id.testEdt);

testEdt.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                // TODO Auto-generated method stub

                InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

                mgr.showSoftInput(testEdt, InputMethodManager.SHOW_IMPLICIT); 

            }

        });

     }


그런데 안됩니다.






해결 방법은 간단합니다. android:windowSoftInputMode="stateHidden|adjustPan" 속성을 빼고


EditText 변수에 setInputType(0) 를 선언해주면 됩니다. 


0은 NULL 이라는 소리입니다. 


ex Success)


EditText testEdt;

...

testEdt = (EditText)findViewById(R.id.testEdt);

testEdt.setInputType(0);

testEdt.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                // TODO Auto-generated method stub

testEdt.setInputType(1);

                InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

                mgr.showSoftInput(testEdt, InputMethodManager.SHOW_IMPLICIT); 

            }

        });

     }


InputMethodManager를 빼지 않는 이유는 이것을 뺀다면 두번 터치해야 키보드가 올라오기 때문이랍니다~



신고
Posted by 그린블로그 DEV그린
2012.06.14 10:07


안드로이드 액티비티 생명주기


onCreate()는 액티비티가 시작될 때 한번만 실행되고 


onResume()는 액티비티가 화면에 보여질 때마다 실행된다.


  




신고
Posted by 그린블로그 DEV그린
2012.06.13 08:44


안드로이드에서는 기본적으로 방향 전환을 하면 


onCreate() 가 호출됩니다.


그래서 방향이 바뀔 때 마다 onCreate()에 선언해 놓은 소스들이 재실행되는데 그걸 막기 위해서는


AndroidMenifast.xml 에 선언된 Activity에


android:configChanges="orientation|keyboard"


속성을 추가시키면 방향전환되도 onCreate가 다시 호출되지 않습니다.



신고
Posted by 그린블로그 DEV그린
2012.04.30 16:38

  PackageManager pm = getPackageManager();

   Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
   mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
   List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0);
   Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm));
  
   Log.d("TEST","Device Name["+android.os.Build.DEVICE+"]");
  
   for(int i=0; i<appList.size(); i++){
    Log.d("INFO","PakageName["+appList.get(i).activityInfo.applicationInfo.packageName+"]");
    Log.d("INFO","ClassName["+appList.get(i).activityInfo.name+"]");     
  }



신고
Posted by 그린블로그 DEV그린
2012.04.04 17:07

가끔 어플을 실행하고 작업 관리자를 실행했을 때

제작중인 어플의 CPU 점유율이 100%로 빨갛게 되는 경우가 있습니다.

그 이유는 Thread를 Sleep하지 않았기 때문인데요~

돌리고 있는 Thread가 있다면 Sleep 시켜줍시다~ 

신고
Posted by 그린블로그 DEV그린
2012.03.20 16:43
리스트 어댑터로 리스트 로우에 특정 이미지나 글자를 넣고자 할 때 

첫화면에선 제대로 표기되자만 스크롤을 할 때 갑자기 이미지나 글자가 뒤죽박죽 되는 경우가 있다.

그것은 리스트 어댑터의  getView에서 스크롤 할 때 마다 이전 로우의 값을 기억하고 있기 때문이었다!!

스크롤을 할 때 마다 불려지기 때문에 이미 사용된 값을 재사용 하기 때문에 다음 로우가 괴상하게 뒤바뀌는 것이었다.

가령 처음 로딩 했을 때

1
2
3
4
5
6
...

이던 것이 

스크롤을 밑으로 한번 내리고 나면 

....
4
5
6
6
6
6

이런식으로 변하고 다시 올리면

6
6
6
6
6

1,2,3,4,5의 값조차 이렇게  6으로 바뀌는 것이다. 

해결책은 간단했다.

이것을 막기 위해서 getView 초기 부분에 로우의 해당 데이터 값을  null로 선언하니까 정상적으로 출력되었다.  

버그인지는 모르겠으나 스크롤 시 값이 뒤죽박죽이 된다면 필시 어댑터의 getView 떄문일 것이다. 


 
신고
Posted by 그린블로그 DEV그린
2012.02.09 10:38
String str = URLDecoder.decode(getParameters().getParam("파라미터").toString());

로 파라미터를 받았는데 +기호가 공백문자로 변경되어있다.

하지만 +기호까지 필요할 경우 따로 스트링 변수 선언을 하여 replace 해주면 먹히지 않는다.

하지만 

String str = URLDecoder.decode(getParameters().getParam("파라미터").toString()).repace(" ", "+"); 

이렇게 붙여주면 먹힌다.

신기할 따름이다 ㅡㅡ; 
신고
Posted by 그린블로그 DEV그린
2012.02.08 17:57

    public void ExecuteApk()

    {

    File apkFile = new File("/mnt/sdcard/download/11.pdf");

//    File apkFile = new File("/mnt/sdcard/download/11.apk");

        Uri apkUri = Uri.fromFile(apkFile);

        try 

        {

//        Intent intent = new Intent(Intent.ACTION_VIEW);

    Intent intent = new Intent();

    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    intent.setAction(android.content.Intent.ACTION_VIEW);

    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

//         intent.setDataAndType( Uri.fromFile(apkFile), "application/vnd.android.package-archive");

         intent.setDataAndType(Uri.fromFile(apkFile), "application/pdf");

         

         startActivity(intent);

         

         this.finish();           // liveupdate 프로그램 종료

        } 

        catch (Exception e) 

        {

    // TODO: handle exception

        }

    }



- 주석처리한 부분은 apk 실행 부분입니다. 

신고
Posted by 그린블로그 DEV그린
2012.01.10 11:00

어플에서 키패드의 다음, 검색, 완료에 해당하는 이벤트를 넣고 싶을 때 사용합니다.

<XML>
..
android:imeOptions="actionNext" 
android:imeOptions="actionSearch" 
android:imeOptions="actionDone"


<CLASS>

((EditText) findViewById(R.id.title)).setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId == EditorInfo.IME_ACTION_DONE){
                                ////////////////TODO!!!//////////////
                        }
                  } 

신고
Posted by 그린블로그 DEV그린
2012.01.04 17:22

TreeMap<Integer,Integer> map = new TreeMap<Integer,Integer>();


 
java.util.Set keyset = map.keySet();
Object[] hashkeys = keyset.toArray();

for(int i=0; i<hashkeys.length; i++) {

Integer key = (Integer)hashkeys[i];
Log.i("INFO", "key : "+key);



* TreeMap을 쓰면 키값이 정렬이 되는 장점이 있습니다. HashMap 호환됩니다.

* 넣기 : map.put(key, value);
* 지우기 : map.remove(key); 


ex)

int[] alarmInMinute;

Log.i("INFO", "map.size() : "+map.size());

java.util.Set
keyset = map.keySet();
Object[] hashkeys = keyset.toArray();

alarmInMinute = new int[hashkeys.length];

for(int i=0; i<hashkeys.length; i++) {
Integer key = (Integer)hashkeys[i];
Log.i("INFO", "key : "+key);
alarmInMinute[i] = map.get(key);
map.remove(key);

}

schedule.setAlarmInMinute(alarmInMinute);


 

신고
Posted by 그린블로그 DEV그린
2012.01.03 11:30
안드로이드에서 맵뷰를 구현하려면 일단 구글에서 맵키를 부여받아야 합니다.

맵 키는 디버그용(개발용)과 배포용이 있는데 여기서는 디버그용만 다루겠습니다.
 
구글 맵키를 받기 위해서는 일단 디버그 키스토어가 어디있는지 알아야 합니다.

일단 이클립스 - 환경설정(Preference)로 들어갑니다.



Android - Build 에서 Default debug keystor 의 위치를 확인합니다.

(저 같은 경우엔 /Users/neoroid/.android/debug.keystore 에 있네요)

다음으로 응용 프로그램 - 유틸리티 - 터미널 을 실행합니다.



아무런 설정을 하지 않았다면 맥에서는 .으로 시작되는 파일 또는 디렉토리가 보이지 않습니다.

ls -al 을 입력해봅니다.

(.android가 보이시나요?)

cd .android 를 입력하여 .android 디렉토리로 들어 간 후 ls 를 입력해봅니다.

(debug.keystore가 보입니다.)

 
이제 키 발급을 위해 다음과 같은 명령어를 입력합니다.

keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android


(MD5 : 다음에 나오는 키가 디버그 키입니다. 제 키는 살짝 지웠습니다.)

키를 드래그하여  복사한 후

http://code.google.com/intl/ko-KR/android/maps-api-signup.html

 
구글 맵 키 발급 사이트로 들어갑니다.

 

체크박스에 체크를 하고

My certification's MD5 fingerprint 옆의 텍스트 박스에 아까 복사한 키를 붙여넣고 [Generate API Key] 버튼을 클릭합니다.
 


사용자 키를 발급받은 모습입니다. 저 키를 MapView에 사용하여 맵을 불러 올 수 있는 것입니다.

xml 코드)

<com.google.android.maps.MapView
android:layout_width="fill_parent"
 
android:layout_height="fill_parent"
 
android:apiKey="발급받은 사용자 키"
 
/> 

 

신고
Posted by 그린블로그 DEV그린
2011.12.30 14:46
viewflipper는 몇페이지든 서로 붙여놓고 폰에서는 마치 페이지 넘기듯 자연스럽게 구현하는 API입니다.

flipper를 구현하다가 현재 보이는 뷰가 몇 번째 페이지인지 알 수 있는 방법은

viewFlipper.getDisplayedChild()

를 사용하는 것입니다. return형은 int형이며 첫 번째 뷰라면 0을, 두 번째는 1을.

0,1,2,3... 이런 식으로 반환해줍니다. 

가령 '페이지를 넘겼을 때 현재 페이지가 x페이지라면 y메소드를 실행' 이런 것을 구현할 수 있는 것입니다.

ex)

*ViewFlipper 선언 부분 (.java)

//전역변수 선언
ViewFlipper viewFlipper ;
Animation slideInLeft ;
Animation slideInRight;
Animation slideOutLeft ;
Animation slideOutRight;


//onCreate 부분에 선언

viewFlipper = (ViewFlipper) findViewById(R.id.ViewFlipper);
slideInLeft = AnimationUtils.loadAnimation(this, R.anim.slide_in_left);
slideInRight = AnimationUtils.loadAnimation(this, R.anim.slide_in_right);
slideOutLeft = AnimationUtils.loadAnimation(this, R.anim.slide_out_left);
slideOutRight = AnimationUtils.loadAnimation(this, R.anim.slide_out_right); 


* 플링이나 버튼 클릭 시 페이지 이동

//이전 페이지
viewFlipper.setInAnimation(
slideInRight);
viewFlipper.setOutAnimation(slideOutRight);
viewFlipper.showPrevious();

//다음 페이지
viewFlipper.setInAnimation(slideInLeft);
viewFlipper.setOutAnimation(slideOutLeft);
viewFlipper.showNext();

* 현재 페이지에 따른 메소드 실행

switch (viewFlipper.getDisplayedChild()) {
    case 0:  //현재 뷰가 첫 번째 페이지라면 method1() 메소드 실행
    method1();
break;
    case 1: //현재 뷰가 두 번째 페이지라면 method2() 메소드 실행
    method2();
break;
    default:
 
break;
 
}


* 플링 효과를 구현할 애니메이션 xml (res폴더 안의 anim 폴더를 만들어 집어넣습니다.)

slide_in_left.xml

 <?xml version="1.0" encoding="utf-8"?>
 
<set xmlns:android="http://schemas.android.com/apk/res/android">
 
<translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="800"/>
 
</set>

slide_in_right.xml

 <?xml version="1.0" encoding="utf-8"?>
 
<set xmlns:android="http://schemas.android.com/apk/res/android">
 
<translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="800"/>
 
</set> 

slide_out_left.xml 

 <?xml version="1.0" encoding="utf-8"?>
 
<set xmlns:android="http://schemas.android.com/apk/res/android">
 
<translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="800"/>
 
</set> 

slide_out_right.xml 

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="800"/>
</set> 

신고
Posted by 그린블로그 DEV그린
2011.12.29 13:35
간혹 스크롤뷰 밑의 리니어 레이아웃의 fill 속성이 먹히지 않을 때가 있습니다.
ScrollView와 Linear에 모두 fill을 줬는데도 Linear가 fill_parent 속성을 인식하지 못하는 이유는
스크롤 뷰에 다음과 같은 속성을 주지 않았기 때문입니다.   

android:fillViewport="true" 

<ScrollView
 android:id="@+id/ScrollView"
 android:layout_width="fill_parent"
 
android:layout_height="fill_parent"
 
android:fillViewport="true"
 
android:fadingEdge="none"


신고
Posted by 그린블로그 DEV그린
2011.12.15 10:18
노티피케이션을 설정한 후 CANCEL FLAG를 설정하지 않으면 

클릭 시에도 사라지지 않아 보기 지저분 한 경우가 있습니다.

이럴땐 선언한 노티피케이션 변수에 아래와 같은 FLAG를 설정하면

클릭 시 깔끔하게 사라지는 모습을 볼 수 있습니다.

noti.flags |= Notification.FLAG_AUTO_CANCEL;


예제)

NotificationManager NotiManager;

NotiManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Notification noti = new Notification(R.drawable.ic_launcher"노티피케이션 테스트",System.currentTimeMillis());
noti.defaults |= Notification.DEFAULT_SOUND;
noti.flags |= Notification.FLAG_INSISTENT;
noti.flags |= Notification.FLAG_AUTO_CANCEL;


Notification Field
 

Notification.DEFAULT_SOUND : 소리 발생
Notification.DEFAULT_VIBRATE : 진동을 발생
Notification.DEFAULT_LIGHTS : 불빛 발생
Notification.DEFAULT_ALL : 상단의 세 가지를 모두 실행

Notification.FLAG_ONGOING_EVENT : 노티피케이션이 알림에 뜨지 않고 진행중에 뜨게 되는 플래그  
Notification.FLAG_INSISTENT : 확인 할 때 까지 집요하게 사운드를 울려주는 플래그
Notification.FLAG_NO_CLEAR : 앱의 프로세스를 종료하지 않는 한 노티를 제거 할 수 없게 만드는 플래그
Notification.FLAG_ONLY_ALERT_ONCE : 취소되더라도 매번 소리와 진동을 발생하는 플래그
Notification.FLAG_SHOW_LIGHTS : LED 불빛을 출력하는 플래그


신고
Posted by 그린블로그 DEV그린
2011.12.08 17:07
안드로이드에서 음력을 구하는 법을 알아보겠습니다.

현재 음력을 구하는 라이브러리가 제공되고 있으므로 간단하게 구현하는 것은 정말 쉽습니다.
(만세력은 아니지만)

http://site.icu-project.org/download

위의 링크에서 음력 달력을 구하는 라이브러리를 다운 받을 수 있습니다.

받아야 할 파일은

icu4j-4.8.1.jar
icu4j-charset-4_8_1.jar
icu4j-localespi-4_8_1.jar

이렇게 총 3개입니다. 하지만 그냥 가져오면 에러가 나는데요.

그 이유는 jar파일 안에 있는  license.html 파일과 unicode-license.txt 파일 때문입니다.

jar 파일을 열어서 이것들을 각각 제거해줍니다.

일련의 과정이 귀찮을 것 같아 
license파일을 제거해놓은 jar파일과 예제를 첨부해놓았습니다.

 

 이제 적용하는 방법을 알아보자면 다운 받은 후 아래 스샷과 같이 프로젝트에 lib 폴더를 만들어 복사합니다.




그 다음 프로젝트에 오른쪽 마우스를 클릭하여 Properties - Java Build Path 에 들어간 후 

다음 스크린샷의 오른쪽 상단에 있는 [Add JARs...] 버튼을 클릭합니다.



해당 프로젝트를 찾아 아까 생성한 lib 폴더로 들어간 후 복사해넣은 세 jar 파일을 모두 선택한 후 OK를 클릭합니다.


(클릭!)


Java Build Path에 jar 파일들이 추가된 것을 확인할 수 있습니다.


이제 세팅은 끝났습니다.

아래는 간단하게 예제 소스입니다.



public
class Main extends Activity {

ChineseCalendar chineseCalendar;

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

Calendar cal = Calendar.getInstance();        

chineseCalendar = new ChineseCalendar();

chineseCalendar.setTimeInMillis(cal.getTimeInMillis());

int y = chineseCalendar.get(ChineseCalendar.EXTENDED_YEAR) - 2637;
int m = chineseCalendar.get(ChineseCalendar.MONTH) + 1;
int d = chineseCalendar.get(ChineseCalendar.DAY_OF_MONTH);

//일자가 10일 보다 적을 때 앞에 0을 붙여줍니다. (11월1일이 11.01이 되어야 하는데 11.1로 나오면 이상하겠죠?)
String lunarDay;
if (d < 10)
lunarDay = "0" + String.valueOf(d);
else
lunarDay = String.valueOf(d);

//결과를 간단하게 로그캣으로 찍어봅니다. 
Log.i("INFO", "오늘은 음력으로 : "+String.valueOf(y)+"년 "+String.valueOf(m)+"월 "+lunarDay+"일입니다!");   

}

}


 

(로그캣 맨 아래줄에 로그가 찍힌 것을 확인할 수 있습니다!) 

신고
Posted by 그린블로그 DEV그린
2011.12.06 14:58
캘린더를 쓰기 전 항상 초기화부터!

Calendar cal = Calendar.getInstance();


주요 API

SECOND
: 초 (11:01:33에서 값은 33)
MINUTE : 분 ( 11:01:33에서 값은 1)
HOUR : 시 (11:01:33에서 값은 11)
HOUR_OF_DAY : 시 (24시간 기준, 예를 들어 22시,23시..등)
 
DAY_OF_WEEK : 월, 화, 수...
DAY_OF_MONTH :  달 중의 하루
DAY_OF_YEAR : 연 중의 하루

WEEK_OF_MONTH : 그 달에서 몇째 주인지 (첫 주는 값이 1) 
WEEK_OF_YEAR : 그 해에서 몇째 주인지 (첫 주는 값이 1)  



실 사용 예 (cal은 맨 위에서 선언한 Calendar cal = Calendar.getInstance(); 에서 가져왔다고 칩니다)

cal.set(Calendar.MONTH, -1); //현재 달을 한달 전으로 설정합니다.
cal.set(Calendar.DAY_OF_MONTH,1); //날짜를 현재 달의 1일로 설정합니다.
cal.add(Calendar.MONTH, 1);  //현재 달에 한달을 더합니다.


 

* 그 달의 마지막 날 구하기

cal.set(Calendar.DAY_OF_MONTH,1); //현재 달의 일자를 1일로 변경 후
cal.set(Calendar.MONTH, +1); //현재 달에 한달을 더합니다.
cal.add(Calendar.DAY_OF_YEAR, -1); 그 후 그 달에서 하루를 빼주면 현재달이 마지막 날짜가 구해집니다!

 

신고
Posted by 그린블로그 DEV그린
2011.12.05 15:02

Intent intent = new Intent(A.this, B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

와 같은 방식으로 사용하며

런치하고자 하는 Activity 가 이미 Task 상에 존재하는 경우, 해당 Activity 위에 존재하는 다른 Activity 를 모두 종료시켜 줍니다.
가령 A->B->A 로 호출이 일어나는 경우, B Activity 가 종료 되고, A Activity 만 Task 에 남게 됩니다. (A->B->C->A 인 경우에
마찬가지로 B와 C 가 종료되고 A 만 남게 됩니다.)

만약에 엑티비티스택에 호출하려는 엑티비티의 인스턴스가 이미 존재하고 있을 경우에 새로운 인스턴스를 생성하는 것 대신에 존재하고 있는 엑티비티를 포그라운드로 가져옵니다. 그리고 엑티비티스택의 최상단 엑티비티부터 포그라운드로 가져올 엑티비티까지의 모든 엑티비티를 삭제합니다.


예를 들면 현재 ABCDE순서로 엑티비티가 스택에 들어있다고 할때 엑티비티E에서 C를 호출하게 되면 D와 E는 스택에서 삭제되고 ABC만이 남아있게 됩니다. 여기서 AB 역시 남는다는 것을 이해하셔야 합니다.

신고
Posted by 그린블로그 DEV그린
2011.12.01 16:50

가끔 이클립스로 새 Workspace를 만들어 기존의 프로젝트를 Import 할 때 

Console창에 Fix Project Properties가 뜨고 Clean을 했는데 @Override 쪽에 에러가 나는 경우가 있습니다.

원인은 Compiler가 1.6 미만이기 때문인데요.

메뉴바의

환경설정 - Java - Compiler 

에 보시면 Compiler compliance level 에 다음 스크린샷과 같이 1.6으로 안되있고 1.4나 1.5로 되어있을 것입니다.

이것을 1.6으로 바꾸고 Apply 하시면 에러가 말끔히 사라집니다. ^^ 

만약, 이렇게 해도 사라지지 않으면 해당 프로젝트에 오른쪽 마우스 클릭 - Properties 로 들어가서 Compiler의 버전을 확인해주세요~ 



신고
Posted by 그린블로그 DEV그린
2011.12.01 16:41
맥에서 이클립스를 실행했을 때 OS가 라이언이고 인디고를 사용할 경우

Vertical ruler, 즉 에러나 경고를 오른쪽 스크롤 바 바로 옆에 표시해주던 룰러가 사라지는 경우를 볼 수 있습니다.

저도 이 문제로 꽤나 고심하다가 해외에서 같은 경우를 볼 수 있었는데...
http://stackoverflow.com/questions/6780269/running-eclipse-on-mac-os-x-lion



결과적으로 이클립스 제작팀의 버그라고 합니다. ㅡ_ㅡ;

이럴 경우, 메뉴바의

Help - Check for Updates

를 보시면 이클립스 업데이트가 떠 있을 것입니다. 업데이트 하고 재실행 하면  Vertical ruler가 제대로 떠 있는 것을 볼 수 있을 것입니다.

만약 업데이트 했는데도 Vertical ruler가 보이지 않는다면 설정문제입니다.

환경설정 - General - Editors - Text Editors - Annotations

으로 가서 Vertical ruler가 체크되어 있는지 확인 한 후 체크해주시면 됩니다.

신고
Posted by 그린블로그 DEV그린