【发布时间】:2016-06-24 14:01:34
【问题描述】:
我的RecyclerView 及其子项有问题。它们不会延伸到整个 android:layout_width="match_parent" 或 fill_parent。我都试过了。问题是,这项工作完美无缺,没有任何改变,不知怎的就毁了。
我在FragmentDialog 中显示此内容,当我上下滚动视图时,子项仅像wrap_content 一样展开,它们已完全展开,但只要我点击它们(我打电话给notifyDataSetChanged())它们又缩小了。
这是一个正确填充的项目的图片,下面是它们在加载或我 notifyData 时的状态。此外,我使用的 StickHeaderAdapter 在单击其中一个项目之前不会显示标题(之前的工作,我在该部分也没有更改任何内容)。
这是子行的代码:
<?xml version="1.0" encoding="utf-8"?>
<carbon.widget.LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
app:carbon_rippleColor="@color/green"
app:carbon_rippleStyle="background">
<carbon.widget.TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/block_name"
android:padding="@dimen/block_row_padding"
android:layout_weight="1"
android:textSize="@dimen/block_row_text_size"
android:textColor="@color/black"
app:carbon_rippleColor="@color/green"
app:carbon_rippleStyle="background"/>
<RelativeLayout
android:id="@+id/download_layout"
android:layout_width="64dp"
android:layout_height="match_parent"
android:layout_marginRight="24dp"
android:layout_marginEnd="24dp"
android:visibility="gone">
<carbon.widget.ProgressBar
android:id="@+id/downloading_bar"
app:carbon_progressStyle="circular_indeterminate"
app:carbon_barWidth="5dp"
app:carbon_tint="@color/green"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:layout_margin="8dp"
android:visibility="invisible"/>
<carbon.widget.TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/block_progress_download"
android:textSize="12sp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:visibility="invisible" />
</RelativeLayout>
这是我创建ViewHolder的适配器代码部分:
@Override
public BlockAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.block_row, parent, false);
return new ViewHolder(view);
}
如果有帮助,这是绑定代码:
@Override
public void onBindViewHolder(BlockAdapter.ViewHolder holder, int position) {
if (blockData.isDownloading()) {
holder.download_layout.setVisibility(View.VISIBLE);
holder.download_bar.setVisibility(View.VISIBLE);
if (blockData.getProgress() != null) {
holder.download_progress.setVisibility(View.VISIBLE);
holder.download_progress.setText(String.format("%d%%", blockData.getProgress()));
}
} else {
holder.download_layout.setVisibility(View.GONE);
holder.download_bar.setVisibility(View.GONE);
holder.download_progress.setVisibility(View.GONE);
}
if (selected) {
holder.itemView.setBackgroundColor(mContext.getResources().getColor(R.color.green));
holder.block_name.setTextColor(mContext.getResources().getColor(R.color.white));
} else {
holder.itemView.setBackgroundColor(mContext.getResources().getColor(R.color.white));
holder.block_name.setTextColor(mContext.getResources().getColor(R.color.black));
}
}
我不知道为什么早上这个工作,后来改变了......
我尝试过的事情:
- 将
match_parent更改为fill_parent - 将
RecyclerView.LayoutParams设置为LayoutParams.MATCH_PARENT - 以编程方式更改宽度
- 将 createViewHolder 从
..., parent, false);更改为..., null);并单独添加参数 - 记录宽度(有时它像 390,当我滚动到 990 时,当我点击返回到 390 时)
- 尽快设置
StickHeaders,但它们在创建时都已设置,并且标头在那里,只是不可见。
感谢任何帮助!
【问题讨论】:
-
您是否尝试过使用普通
LinearLayout?我不知道carbon.widget.LinearLayout是什么或它的作用 -
它只是为点击项目添加涟漪效果。它以前曾与之合作过:/
-
它会进行一些自定义测量,所以我不会完全相信这一点。您应该尝试它是否适用于正常布局。
-
我试过了,也不能正常使用
标签: android android-recyclerview