我正在尝试通过自定义XML布局构建沉浸式。
我的理解是如果我使用CardBuilder,我需要embed_inside但是我想用整个屏幕和我的XML布局。
之前看来这可能是使用卡,但该界面已被折旧。
我可能只是缺少一个基本的Glass概念,但到目前为止我读过的每个示例或文档都通过CardBuilder.Layout访问并使用预定义的玻璃布局。
答案 0 :(得分: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);
}
}
您可以根据需要添加任意数量的自定义视图。 我希望它有所帮助
答案 1 :(得分:2)
如果您更喜欢使用自己的自定义布局,则不需要使用CardBuilder
:请务必遵循我们的design guidelines以确保您符合我们的规范。
要使用自定义布局,只需按正常情况对View
进行充气,然后在应用程序中使用。
对于Activity
,你可以这样:
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.my_custom_layout);
}
如果您使用CardScrollView
,只需修改CardScrollAdapter
的{{1}}方法即可返回getView
:
View