【问题标题】:Android Tablelayout show all dividersAndroid Tablelayout 显示所有分隔线
【发布时间】:2015-03-24 16:12:36
【问题描述】:

Android Tablelayout 是否可以使用 xml 属性显示所有分隔符(见下图)?

我花了一些时间在互联网上搜索,发现很多人只是使用自定义视图。

有没有办法在 xml 或其他更好的方法中做到这一点?

示例(不介意边框粗细不同):

【问题讨论】:

  • 我无法理解你的问题。你想为表格布局设置边框吗?
  • 所以你想在表格布局上显示分隔线?
  • 你想显示网格线???
  • @RakeshL 不,我只是想在每行和每列之间以及两侧显示分隔线。
  • @ZeeshanKhan 差不多

标签: android android-tablelayout divider


【解决方案1】:

您可以使用以下代码来做到这一点

使用以下代码在可绘制文件夹中创建选择器 xml

valuecellborder.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<!--     <solid android:color="#dc6888"/>     -->
    <stroke android:width="0.1dp" android:color="#ffffff"
        />
    <padding android:left="0dp" android:top="0dp"
            android:right="0dp" android:bottom="0dp" />
</shape>

现在在你的布局xml代码中放入TableRow标签

android:background="@drawable/valuecellbroder"

在每个项目标签中,例如 Textview 背景

【讨论】:

  • 当内部视图(即 TableRow 中的每个视图项)的大小在高度不固定的情况下发生变化(wrap_content)时,它们的边框可能会以不同的方式显示(之字形)而不是在一行中。
【解决方案2】:

就我而言,我使用了这种方法。
我将表格背景设置为黑色,然后使用 TopMargin 将表格行背景设置为白色。
在 .xml 中:

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#000000" />

在 .java 中:

TableRow tr = new TableRow(MainActivity.this);
tr.setBackgroundColor(resource.getColor(R.color.white));
int topMargin = 2;  // border Thickness
TableLayout.LayoutParams tableRowParams =
        new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, 250);  // 250 is my row height
tableRowParams.setMargins(0, topMargin, 0, 0);
tr.setLayoutParams(tableRowParams);

【讨论】:

    【解决方案3】:

    最简单的方法,在我的脑海中,给你你想要的线条是让 TableLayout 或 GridLayout 的每个单元格都是包含该单元格的小部件的容器,你给容器一个背景那是你的行。可以在 XML 中为该背景定义一个 ShapeDrawable,它可以根据单元格的实际要求很好地调整大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 2018-12-30
      • 2017-04-04
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 2013-06-25
      相关资源
      最近更新 更多