app:stackFromEnd for RecyclerView无法在xml中运行?

时间:2015-12-15 10:35:30

标签: android android-layout android-recyclerview linearlayoutmanager

我将RecyclerView定义为:

    <android.support.v7.widget.RecyclerView
      android:id="@+id/message_list"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_above="@id/message_input"
      android:layout_alignParentTop="true"
      app:stackFromEnd="true" />

相关代码也常用于:

    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    //layoutManager.setStackFromEnd(true);
    mRecyclerView.setLayoutManager(layoutManager);

但是,当我添加项RecyclerView时,它不尊重app:stackFromEnd="true"。另一方面,如果我以编程方式取消注释并使用layoutManager.setStackFromEnd(true);,它可以正常工作。我错过了什么问题?欢迎任何想法。

2 个答案:

答案 0 :(得分:13)

我遇到了类似的事情。问题是当RecyclerView被充气时,它会读取属性。

但是你要分配一个在java代码中创建的新的LinearLayoutManager。此新管理器没有将stackFromEnd属性设置为true(默认为false)。

stackFromEnd是经理的属性,而不是RecyclerView

就我而言,我有这个:

<android.support.v7.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/list"
    app:stackFromEnd = "true"
    app:layoutManager="LinearLayoutManager"
</android.support.v7.widget.RecyclerView>

在您的xml代码中,您没有app:layoutManager属性,所以我不确定在通货膨胀时为您创建了什么样的经理。

答案 1 :(得分:1)

Android似乎无法识别function dropdownopen(param) { $('#dropdownnum('+param+')').fadeOut(300); } 。也许你把它放在错误的地方。 app:stackFromEnd="true"做同样的工作,但是以编程方式完成。

根据文件:

  

setStackFromEnd(Boolean)

     

public void setStackFromEnd(boolean stackFromEnd)

的兼容性支持

setStackFromBottom(boolean)
     

在API级别1中添加当底部的堆栈设置为true时,列表   从视图底部开始填充其内容。

     

参数public void setStackFromBottom (boolean stackFromBottom) stackFromBottom将视图的内容固定到   底边,true将视图的内容固定到顶边

阅读以下内容:

http://developer.android.com/reference/android/support/v7/widget/LinearLayoutManager.html#getStackFromEnd()

http://developer.android.com/reference/android/widget/AbsListView.html#setStackFromBottom(boolean)