我想通過自定義的XML佈局建立一個沉浸式。谷歌玻璃浸沒自定義佈局沒有CardBuilder.Layout.EMBED_INSIDE
我的理解是,如果我使用CardBuilder,我需要embed_inside,但我想用我的XML佈局使用整個屏幕。
看來,這是以前可能使用卡,但該接口已折舊。
我可能只是缺少一個基本的玻璃概念,但我讀過的每個示例或文檔都是通過CardBuilder.Layout訪問並使用預定義的玻璃布局。
我想通過自定義的XML佈局建立一個沉浸式。谷歌玻璃浸沒自定義佈局沒有CardBuilder.Layout.EMBED_INSIDE
我的理解是,如果我使用CardBuilder,我需要embed_inside,但我想用我的XML佈局使用整個屏幕。
看來,這是以前可能使用卡,但該接口已折舊。
我可能只是缺少一個基本的玻璃概念,但我讀過的每個示例或文檔都是通過CardBuilder.Layout訪問並使用預定義的玻璃布局。
如果您更願意使用自己的自定義佈局,則不需要使用CardBuilder
:請務必按照我們的design guidelines以確保您符合我們的規格。
要使用您的自定義佈局,只需像您通常那樣爲應用程序使用View
即可。
對於Activity
,你可以是這樣的:
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.my_custom_layout);
}
如果您使用的是CardScrollView
,只需修改CardScrollAdapter
的getView
方法來回報您的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;
}
我已經我自己也有這個問題,而且我很容易解決它。 關於它沒有太多的文檔,這是令人失望的。
由於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);
}
}
您可以根據需要添加儘可能多的自定義視圖。 我希望它有幫助