0

내가 안드로이드 스튜디오에서 응용 프로그램을 쓰고 있어요 나는 내가 필요로하는 특정 양식 사용자 지정보기를 만들려고하고, 무엇인가 :Android - 맞춤보기를 레이아웃하고 사용하는 방법은 무엇인가요?

Custom View Example

(I 레이아웃이 생각하는 방법을 보여주기 위해 다른 색상을 사용

다음은 XML의) 이동 : 나는 응용 프로그램에 다른 레이아웃이보기를 추가하려고 할 때

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="match_parent" 
    android:layout_height="150dp" 
    android:weightSum="2" 
    android:background="@android:color/holo_red_dark"> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:layout_weight="1" 
     android:paddingLeft="15dp" 
     android:paddingRight="15dp"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="75dp" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:text="Large Text" 
      android:id="@+id/hourLbl" 
      android:layout_gravity="center" 
      android:background="@android:color/holo_blue_bright"/> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="75dp" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:text="Large Text" 
      android:id="@+id/minuteLbl" 
      android:layout_gravity="center" 
      android:background="@android:color/holo_orange_dark"/> 

    </LinearLayout> 

     <TextView 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:text="Large Text" 
      android:id="@+id/actionName" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:background="@android:color/darker_gray"/> 

</LinearLayout> 

문제가 온다 .. 그것은 빈 사각형으로되어 있습니다. 나는 이것을 올바르게하는 방법에 대한 해답을 찾으려고 노력했지만 아무 도움이되지 않습니다.

내가보기 (ActionView) 원하는 위치에 내가 활동의 XML에있는 것입니다 :

여기
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" tools:context=".HomeActivity"> 

    <...ActionView 
     android:layout_width="match_parent" 
     android:layout_height="150dp" 
     android:id="@+id/firstAction" /> 

</RelativeLayout> 

내가 가지고있는 ActionView의 생성자의를 (그들과 함께 할 무엇 확실하지 그냥 정직하게 튜토리얼에서 복사) :

public ActionView(Context context) { 
    super(context); 
} 

public ActionView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    TypedArray a = context.getTheme().obtainStyledAttributes(
      attrs, 
      R.styleable.ActionView, 
      0, 0); 

    try { 
     mHourLbl = a.getString(R.styleable.ActionView_hourLbl); 
     mMinuteLbl = a.getString(R.styleable.ActionView_minuteLbl); 
     mActionName = a.getString(R.styleable.ActionView_actionName); 
    } finally { 
     a.recycle(); 
    } 

} 

public ActionView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
} 
+0

그리고'ActionView' 생성자의 구현은 무엇입니까? 문제는 아마 거기에있다 –

+0

@blipinsk 당신은 그것을 가지고 있습니다. – DidierFuentes

답변

0

나는 당신이 가장 중요한 부분을 놓치고 있다고 생각합니다. 당신의 ActionView 생성자 내부

LayoutInflater.from(context).inflate(R.layout.<xml_of_action_view>, this, true); 

: 당신은

추가 ... 당신의 ActionView 객체에 레이아웃을 묶는 아닙니다.

+0

답변과 거의 같지만 두 번째 인수는 ViewGroup이어야하고 "this"는 뷰의 하위 클래스이며 여기서는 무엇을해야할지 확실하지 않습니다. – DidierFuentes

+0

''레이아웃 xml 루트 객체가'LinearLayout'이므로'LinearLayout'의 서브 클래스 여야합니다 –

+0

완벽! 뷰에서 LinearLayout으로 super를 변경하여 효과적입니다! 감사 – DidierFuentes