2014-11-13 4 views
0

글쎄, 이것은 어디서나 찾을 수없는 것입니다. 그 어딘가에 기록 될 수도 있지만 내 가난한 검색 기술로 인해 찾을 수 없다.Android : 사용자 정의 매개 변수가있는 사용자 정의보기 클래스

기본적으로 내가하고 싶은 것은 String 배열을 전달하는 클래스를 만들고 그 배열에서 클래스는 String 배열의 요소 수와 같은 숫자의 단추를 가진 뷰를 반환합니다.

뭔가 같은

Public class customView extends View { 
     public customView(Context context, AttributeSet attrs, String[] array) { 
      super(context, attrs, array); 
     } 
} 

는하지만 난이 작업을 수행 할 수 없습니다입니다. 왜냐하면 View 클래스는 생성자 매개 변수에서 String 배열을 지원하지 않기 때문입니다. 아무도 이것에 대한 해결책이 있습니까? 이 목표를 달성하기 위해 새로운 접근 방식으로 이동해야합니까?

감사합니다,

제이 Stepin. 다음과 같이

+0

귀하의 요구 사항 보인다. –

+0

@AnujSharma OP는 새로운보기를 만들고 버튼 수를 결정하는 XML 속성을 정의 할 수 있습니다. 문자열 배열이나 버튼에 텍스트를 제공하는 것으로 연결되는 또 다른 XML 속성입니다. :) –

답변

2

먼저, 속성을 선언 : 사용자 정의 속성을 정의하면

<resources> 
    <declare-styleable name="PieChart"> 
     <attr name="showText" format="boolean" /> 
     <attr name="labelPosition" format="enum"> 
      <enum name="left" value="0"/> 
      <enum name="right" value="1"/> 
     </attr> 
    </declare-styleable> 
</resources> 

, 당신은 레이아웃 XML 파일을 단지 같은 기본 속성에 사용할 수 있습니다. 유일한 차이점은 사용자 지정 특성이 다른 네임 스페이스에 속하는 것입니다. http://schemas.android.com/apk/res/android 네임 스페이스에 속하는 대신 http://schemas.android.com/apk/res/[your package name]에 속합니다. 사용자 정의 PieChart 클래스에 대한이 같은

뭔가 :

public PieChart(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    TypedArray a = context.getTheme().obtainStyledAttributes(
     attrs, 
     R.styleable.PieChart, 
     0, 0); 

    try { 
     mShowText = a.getBoolean(R.styleable.PieChart_showText, false); 
     mTextPos = a.getInteger(R.styleable.PieChart_labelPosition, 0); 
    } finally { 
     a.recycle(); 
    } 
} 

SOURCE : 멀어져

http://developer.android.com/training/custom-views/create-view.html

코드에서

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res/com.example.customviews"> 
<com.example.customviews.charting.PieChart 
    custom:showText="true" 
    custom:labelPosition="left" /> 
</LinearLayout> 

, 당신은이 라인을 따라 뭔가가 필요 . READING : 당신이 당신의 필요에 따라 사용자 정의 된 목록보기 나있는 gridview와 함께 사용자 지정 어댑터가 필요 같은

Defining custom attrs

+0

안녕 작은 아이. 여기에 불완전한 질문에 대해 죄송합니다. 하지만 프로그래밍 방식으로이 클래스를 구현하려면 xml을 여기에서 사용하고 싶지는 않습니다. 그래서 우리가 성취 할 수있는 속성이 있습니다. 하지만 클래스에 프로그래밍 방식으로이 특성을 포함하는 방법을 모르겠다. Java 파일을 의미한다. –

+0

"이 특성을 프로그래밍 방식으로 클래스에 포함하십시오"라는 의미는 이해할 수 없습니다. :) 예제를 제공하십시오 –

+0

여기서 사용자 지정 클래스에 대해 XML 파일을 사용하지 않으려면 어떻게해야합니까? 여전히 사용자 정의 클래스에서이 속성을 사용할 수 있습니까? –

관련 문제