2014-11-20 2 views
0

맞춤 XML 레이아웃을 통해 몰입감을 구축하려고합니다.Google Glass Immersion 맞춤 레이아웃 (CardBuilder.Layout.EMBED_INSIDE 제외)

CardBuilder를 사용하는 경우, embed_inside가 필요하지만 내 XML 레이아웃으로 전체 화면을 사용하고 싶습니다.

이전에는 카드를 사용하여 가능했지만 인터페이스가 감가 상각되었습니다.

기본 Glass 개념이 누락되었을 수 있지만 지금까지 읽은 모든 예제 나 문서는 CardBuilder.Layout을 통해 액세스하고 사전 정의 된 유리 레이아웃을 사용합니다.

답변

2

사용자 정의 레이아웃을 사용하려면 CardBuilder을 사용할 필요가 없습니다. 을 따라 사양을 충족하는지 확인하십시오.

사용자 정의 레이아웃을 사용하려면 일반적으로 응용 프로그램에서 사용하는 것처럼 View을 부풀려주십시오. Activity를 들어

, 그럴 수 뭔가 같은 :

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // You can inflate the View using a LayoutInflater: 
    //  LayoutInflater.from(mContext).inflate(R.layout.my_custom_layout, parent); 
    return mCustomView; 
} 
4

내가했습니다 : 당신이 CardScrollView를 사용하는 경우

@Override 
protected void onCreate(Bundle bundle) { 
    super.onCreate(bundle); 
    setContentView(R.layout.my_custom_layout); 
} 

, 단순히 View 당신을 반환 할 CardScrollAdaptergetView 방법을 수정 이 문제가 나 자신에게있어서 매우 쉽게 해결할 수있었습니다. 너무 많은 설명서가 없으므로 실망 스럽습니다.

Card 클래스가 사용되지 않으며 CardBuilder.EMBED_INSIDE가 상당히 제한적이므로. 당신이 가지고있는 유일한 옵션은 앞서 언급 한 것처럼 사용자 정의보기를 사용하는 것입니다. 그러나 수동으로 팽창시킬 필요는 없습니다! 사용하는 경우 CardScrollView 및 CardScrollAdapter를 사용하고 있습니다. 당신은 당신의 활동에 다음과 같은 작업을 수행 할 수 있습니다

public class MainCardsScrollAdapter extends CardScrollAdapter 
{ 
    ArrayList<View> _cardsList; 
    public MainCardsScrollAdapter(ArrayList<View> cardsList) 
    { 
     _cardsList = cardsList; 
    } 

    @Override 
    public int getCount() { 
     return _cardsList.size(); 
    } 

    @Override 
    public Object getItem(int i) { 
     return _cardsList.get(i); 
    } 

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 
     return _cardsList.get(i); 
    } 

    @Override 
    public int getPosition(Object o) { 
     return _cardsList.indexOf(o); 
    } 

    @Override 
    public int getViewTypeCount() { 
     return CardBuilder.getViewTypeCount(); 
    } 

    @Override 
    public int getItemViewType(int position){ 
     return 0;//should be changed, it's just an example 
    } 
} 

지금 단순히 당신이 XML에서 원하는 레이아웃을 생성 : 지금은 대신 CardBuilders의 전망을 가지고 있기 때문에
private CardScrollView _cardScroller; 
private ArrayList<View> _cardsList; 
private MyCustomView _myView; 
@Override 
protected void onCreate(Bundle bundle) { 
    _cardsList = new ArrayList<View>(); 
    _myView= new MyCustomView (this); 
    _cardsList.add(_myView); 
    _cardScroller = new CardScrollView(this) ; 
    MainCardsScrollAdapter adapter = new MainCardsScrollAdapter(_cardsList); 
    _cardScroller.setAdapter(adapter); 
    _cardScroller.activate(); 
    setContentView(_cardScroller); 
} 

가 지금은 사용자 정의 CardScrollAdapter을 사용했다. 그리고 사용자 정의보기를 만들 : 공용 클래스 MyCustomView은 당신이 원하는대로 당신은 많은 사용자 정의보기를 추가 할 수 있습니다 FrameLayout이 {

public MyCustomView (Context context) { 
     super(context); 
     initView(); 
    } 

    private void initView() 
    { 
     View view = inflate(getContext(), R.layout.live_card, null); 
     addView(view); 
    } 
} 

을 확장합니다. 도움이 되었기를 바랍니다.