2014-11-20 46 views
0

我想通過自定義的XML佈局建立一個沉浸式。谷歌玻璃浸沒自定義佈局沒有CardBuilder.Layout.EMBED_INSIDE

我的理解是,如果我使用CardBuilder,我需要embed_inside,但我想用我的XML佈局使用整個屏幕。

看來,這是以前可能使用卡,但該接口已折舊。

我可能只是缺少一個基本的玻璃概念,但我讀過的每個示例或文檔都是通過CardBuilder.Layout訪問並使用預定義的玻璃布局。

回答

2

如果您更願意使用自己的自定義佈局,則不需要使用CardBuilder:請務必按照我們的design guidelines以確保您符合我們的規格。

要使用您的自定義佈局,只需像您通常那樣爲應用程序使用View即可。

對於Activity,你可以是這樣的:

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

如果您使用的是CardScrollView,只需修改CardScrollAdaptergetView方法來回報您的View

@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

我已經我自己也有這個問題,而且我很容易解決它。 關於它沒有太多的文檔,這是令人失望的。

由於Card類已棄用且CardBuilder.EMBED_INSIDE相當有限。如前所述,唯一的選擇是使用自定義視圖。但你不需要手動充氣! 如果您使用的是使用CardScrollView和CardScrollAdapter。你可以做到以下幾點在你的活動:

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因爲現在它有意見,而不是CardBuilders:

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想要的佈局。 並創建自定義視圖: 公共類MyCustomView擴展的FrameLayout {

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

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

您可以根據需要添加儘可能多的自定義視圖。 我希望它有幫助