- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用带有 GirdLayout 管理器的回收器 View 来创建总线布局
我的问题是间距,我根据行列填充数据
我想要第 3 行和第 2 列的元素,位于第 2 行第 0 列的卧铺座位旁边,如图所示我怎样才能删除那个空间,项目应该根据其上面的项目容纳。
customGridAdapter = new CustomGridViewAdapter(getActivity(), busSeatModel, false, fareCategory, BusSeatLayout.this);
RtlGridLayoutManager gridLayoutManager = new RtlGridLayoutManager(getActivity(), busSeatModel.getMaxLowerColumn());
seatLayout.setLayoutManager(gridLayoutManager);
seatLayout.setAdapter(customGridAdapter);
这是我的 customGridAdapter onBindViewHolder
public class CustomGridViewAdapter extends RecyclerView.Adapter<CustomGridViewAdapter.MyViewHolder> {
Context context;
BusSeatModel busSeatModel;
HashMap<Integer, HashMap<Integer, BusSeatItemModel>> data = new HashMap<>();
LayoutInflater inflater;
boolean upper;
HashMap<Integer, BusSeatItemModel> seatLowerModels;
BusSeatItemModel lowerModel;
int maxColumn = 0;
int maxRow = 0;
BusSeatLayout busSeatLayout;
int fare;
public CustomGridViewAdapter(Context context, BusSeatModel busSeatModel, boolean upper, int fare, BusSeatLayout busSeatLayout) {
this.context = context;
this.busSeatModel = busSeatModel;
inflater = LayoutInflater.from(context);
this.fare = fare;
this.busSeatLayout = busSeatLayout;
this.upper = upper;
if (upper) {
data = busSeatModel.getBusSeatUpperModels();
maxColumn = busSeatModel.getMaxUpperColumn();
maxRow = busSeatModel.getMaxUpperRow();
} else {
data = busSeatModel.getBusSeatLowerModels();
maxColumn = busSeatModel.getMaxLowerColumn();
maxRow = busSeatModel.getMaxLowerRow();
}
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.seatrow_grid, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
try {
int row = GetRow(position);
int column = GetCol(position);
Log.d(" Row Column ", "" + row + " " + column);
seatLowerModels = new HashMap<>();
if (data.containsKey(row)) {
seatLowerModels = data.get(row);
if (seatLowerModels.containsKey(column)) {
lowerModel = seatLowerModels.get(column);
Log.v(" same fare ", " model fare " + lowerModel.getBaseFare() + " category selected " + fare);
if (fare == -1) {
Log.v(" fare is all ", "++++ ");
holder.imageItem.setImageResource(lowerModel.getDrawableName(false));
} else {
Log.v(" fare is not all ", "");
if (lowerModel.getBaseFare() == fare) {
Log.v(" fare is same ", "");
holder.imageItem.setImageResource(lowerModel.getDrawableName(false));
} else {
Log.v(" fare is diff ", "");
holder.imageItem.setImageResource(lowerModel.getDrawableName(true));
}
}
holder.imageItem.setVisibility(View.VISIBLE);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private int GetCol(int pos) {
int col = pos % (maxColumn);
return col;
}
private int GetRow(int pos) {
int row = pos / (maxColumn);
return row;
}
@Override
public int getItemCount() {
return maxColumn * maxRow;
}
public class MyViewHolder extends RecyclerView.ViewHolder {
ImageView imageItem;
public MyViewHolder(View itemView) {
super(itemView);
imageItem = (ImageView) itemView.findViewById(R.id.item_image);}
}
这是回收站
<RelativeLayout
android:id="@+id/rlRecycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:gravity="center">
<android.support.v7.widget.RecyclerView
android:id="@+id/rvFareCategory"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:background="#ffffff"
android:paddingBottom="6dip"
android:paddingTop="8dip"></android.support.v7.widget.RecyclerView>
</RelativeLayout>
和座位布局xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/item_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:padding="4dp"
android:visibility="invisible"></ImageView>
</RelativeLayout>
最佳答案
当然,问题出在您的元素不具有相同高度这一事实。您需要为元素分配不同的行跨度。我建议为较高的元素(左侧的元素)分配 2 的行跨度,为较小的元素分配 1。
我认为你可以通过一些技巧来做到这一点,比如将你的网格布局管理器设置为水平方向并使用 GridLayoutManager.setSpanSizeLookup(..)
来控制跨度(因为你现在是水平的,跨度将作用于行)。这可能需要您重新设计从后备数组中获取元素的逻辑。另一种选择是(据我所知)实现您自己的自定义布局管理器。
关于android - 在 recyclerview Gridlayoutmanager 中创建总线布局时出现间距问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39411952/
这个问题在这里已经有了答案: Why should there be spaces around '[' and ']' in Bash? (4 个回答) 3年前关闭。 作为初学者,我没有在任何地方找
我有一个程序,我在其中输入 Java 程序来检查输入的字符串是否为回文。我有 2 个问题正在发生,我似乎一辈子都无法解决。 我已经输入了代码,这样它会告诉我它是否是一个回文,当所有小写字母不涉及空格时
table { border: 0; padding: 0; border-collapse: collapse;
我有 10 个单元格,其中第 6 个单元格的宽度必须与其他单元格不同。我试图在流委托(delegate)方法中更改它。但是从第 7 个单元格到第 10 个单元格的间距出了点问题。 func coll
我只是希望将这些新闻发布很好地隔开,以便在每次发布之间留出空隙。我在下面附上了一张图片来解释。我试图增加下面的填充,但这没有用。感谢您的帮助 .headline { position: absolut
如何使用 css 删除表格结构中烦人的单元格间距和/或填充?如果解决方案在 IE7-9、Firefox 和 Chrome 中有效,请加倍支持! 为什么CSS这么难!真让人抓狂! 最佳答案 通常,在该表
我在我正在使用的网站上设置了按钮。我想在按钮外创建一个 2px 的边框,有一点间距。请参见设计图像。 我可以创建边框,但不能创建边框之外的间距。这是当前的开发站点。按钮是第一个图形。 到目前为止我已经
我正在网站上生成元素符号列表(通过使用 jquery 自动完成功能)和我在网站中使用响应式网页设计。 我想在每个列表项后留一个空格。为此,我添加了以下 CSS: li { margin-b
我在格式化我的 HTML 页面时遇到困难。 正如您从源代码中看到的那样,它是一个表格,其中每一行都包含由我的网络应用程序动态填充的格式化记录列表。如果其中一列有空值,我想保留行的格式,所以我基本上应该
我一直致力于设计一个具有三个链接的跨移动设备宽度的设计。我不明白为什么我不能得到正确的间距。什么看起来不对劲? 设计如下: 下面是编码版本的样子: 这是我的 CSS: .b-nav-Wrapper {
我需要在 matplotlib 中生成一大堆垂直堆叠的图。结果将使用 savefig 保存并在网页上查看,所以我不在乎最终图像有多高,只要子图间隔开,这样它们就不会重叠。 无论我允许这个数字有多大,子
我需要在 matplotlib 中生成一大堆垂直堆叠的图。结果将使用 savefig 保存并在网页上查看,所以我不在乎最终图像有多高,只要子图之间有间距,不重叠即可。 无论我允许图有多大,子图似乎总是
是否可以在 BorderPane 上设置节点之间的间距? ? Swing 等效项将是 BorderLayout 上的 hgap 和 vgap . 我在文档中没有找到任何内容,我能想到的唯一可行的解
我有一个基于日历的应用 我希望用户能够通过捏合来放大和缩小日历。这是我的代码: let p = UIPinchGestureRecognizer(target: self, action: #sele
我在为 Android 编写一段代码时遇到问题。我使用的是eclipse开发环境。我想要完成的是将一周中的日子均匀地分布在表格的第一行(有六行)。我不知道如何才能使这些单词真正散开,而不是仅仅粘在一起
我有一个基于日历的应用 我希望用户能够通过捏合来放大和缩小日历。这是我的代码: let p = UIPinchGestureRecognizer(target: self, action: #sele
我该怎么做才能对齐此代码中的所有列?这是正确的还是......? import urllib.request from re import findall def determinarLlegadas
当使用垂直对齐的 BoxLayout 时,如何阻止组件随着包含的 JFrame 的增长而扩展,从而在底部留下额外的空间?我尝试了不同的布局,但很快就变得一团糟。我还尝试在面板底部添加胶水,但布局管理器
我正在尝试制作 cout #include int main() { std::cout << setw(4) << 1 << setw(4) << 2 << std::endl; } 输出
使用示例 http://developer.android.com/guide/tutorials/views/hello-tabwidget.html通过向布局添加 HorizontalScro
我是一名优秀的程序员,十分优秀!