android 为啥没有边框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 为啥没有边框相关的知识,希望对你有一定的参考价值。

参考技术A 不会吧。是别人设置了边框宽度、内部间距的吧。看看我做的透明、圆角按钮。1. 先在res/drawable中定义一个shape.xml文件,具体的颜色你可以自己调1234567891011121314151617181920<?xml version="1.0" encoding="UTF-8"?><shape xmlns:android=" android:shape="rectangle" > <!-- 填充的颜色:这里设置背景透明 --> <solid android:color="@android:color/transparent" /> <!-- 边框的颜色 :不能和窗口背景色一样--> <stroke android:width="3dp" android:color="#ffffff" /> <!-- 设置按钮的四个角为弧形 --> <!-- android:radius 弧形的半径 --> <corners android:radius="5dip" /> <!-- padding:Button里面的文字与Button边界的间隔 --> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /></shape>------------------------------------------------------------------------2. 在你的Activity的xml(比如activity_main.xml)中定义按钮123456<Button android:id="@+id/roundButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/shape" android:text=" 圆角按钮 " />用上这句就OK啦:btn.setBackgroundResource(R.drawable.shape);具体代码如下(不清楚你的布局是动态创建,还是使用已有的)setContentView(R.layout.main);//获取Activity的布局:注意你必须在main.xml中给LinearLayout设置id,比如:android:id="@+id/layout_main"LinearLayout layout = (LinearLayout) 1234567891011findViewById(R.id.layout_main);// 如果你的Layout也是动态创建的,那么创建布局LinearLayout layout = new LinearLayout(this);当然还要创建布局参数,最后addContentViewLinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);// ---create a button---Button btn = new Button(this);btn.setText("圆角透明");btn.setBackgroundResource(R.drawable.shape);btn.setLayoutParams(params);// ---adds the button---layout.addView(btn);

为啥 Firefox 缺少某些 HTML 表格的边框

【中文标题】为啥 Firefox 缺少某些 HTML 表格的边框【英文标题】:Why is Firefox missing the border on some HTML tables为什么 Firefox 缺少某些 HTML 表格的边框 【发布时间】:2011-01-04 22:17:40 【问题描述】:

我使用的是 Firefox 3.5.7,并且我在多个 HTML 表格中使用了相同的 CSS,但有些示例未显示部分边框。

对我来说没有意义的是,同一页面上的相同 CSS 用于另一个 HTML 表格可以正常工作。此外,从边界的角度来看,Internet Explorer 中的同一页面看起来不错。

这是一个带有示例的图像,您可以在这种情况下看到第一个表格的底部缺少边框。

有人知道为什么会在这里发生吗?

【问题讨论】:

【参考方案1】:

也许您已经放大/缩小了一点。当您执行 Ctrl+Scrollwheel 时,这可能会意外或有意发生。也许它没有完全重置为零缩放级别。这种错误渲染行为在某些网站上是可以识别的,在 SO 也是如此。

要解决此问题,只需按 Ctrl+0 或执行 查看 > 缩放 > 重置 将缩放级别重置为默认值。

这是 Firefox/Gecko 错误 410959。这会影响带有border-collapse:collapse 的表。它是从 2008 年开始的,并且没有真正的进展,因此您可能需要找到一种解决方法。一种方法是使用border-collapse:separate 并在每个单元格的基础上摆弄边框。

【讨论】:

你是对的。 .这样可行。但我还是不明白。 .为什么缩放会删除一些边框而不是其他边框?? 一像素粗线的粗细很难减半。如前所述,这只是一种错误渲染行为。 例如,尝试缩小您现在所面对的 SO 页面。您会看到上面的标签oldestnewest 和/或votes 在某些级别实际上会失去它们的边界底部。 有趣。 .我想这是有道理的。 .但我仍然希望它在相同大小的元素中保持一致..所以我希望每个表格都一致地失去其边框 不,当然不是。如果你从例如收缩800px 高度到 799px 高度,那么仍然只有 1px 的线可以被丢弃。【参考方案2】:

这是由于表格(缺少底部边框)在 div 内造成的...边框显然没有在表格高度中计算,所以边框在那里但没有显示。

给周围的 div 一个 1px 的 margin-bottom 解决了这个问题。

【讨论】:

【参考方案3】:

我在 Firefox 中缩小我正在处理的应用程序时发现了类似的问题。

主要原因是将 CSS border-collapse 属性设置为 collapse

将其更改为 separate 反而解决了问题。但是,这意味着我确实必须重新考虑将边框应用于表格各个部分的方式,因为否则您的边框看起来会加倍粗细。我最终不得不使用 jQuery 为每个 tr 中的最后一个 tdth 以及表格中的最后一个 tr 提供一个特殊的“last”类。我的查询类似于:

$('table tr > th:last-child, table > tbody > tr > td:last-child, table > tbody > tr:last-child').addClass('last');

我的 CSS 规则类似于:

table

    border-collapse: separate !important;


table tr, table th, table td

    border-right-width: 0;
    border-bottom-width: 0;
    border-left: 1px solid black;
    border-top: 1px solid black;


table td.last, table th.last 

    border-right: 1px solid black;


table tr.last td

    border-bottom: 1px solid black;


table

    border: 0;

我确实最终使用了浏览器定位,因此我只将这些规则应用于 Firefox 用户,但它可能适用于所有浏览器,我尚未测试。

【讨论】:

公平地说,这个问题不是由边界崩溃“引起”的,它是由十年前报告的firefox bug 引起的(待修复,与许多旧报告的 firefox 错误一样) 【参考方案4】:

只需使用border-spacing:0; 希望这能解决您的问题。

【讨论】:

【参考方案5】:

当浏览器缩放增加时,边框开始丢失。我能够通过执行以下操作来解决它。在 Chrome 和 Firefox 中测试。

padding: 0.5px !important

【讨论】:

【参考方案6】:

我也遇到了缺少表格边框的问题。 我的解决方案是:

table
  border-collapse: collapse !important;
  border-spacing: 0px;
  border: 1px solid #DDD;

表格行的边框:

table tr
  border-bottom: 1px solid #DDD !important;

我在我的布局中使用 Bootstrap,并且表格也有引导 css 类,例如“table table-striped table-bordered”

当我尝试使用

解决方案时,此解决方案对我有用
border-collapse: separate !important;

它对我来说不能正常工作。

【讨论】:

【参考方案7】:

基于@GregL 的好回答(我似乎无法直接“评论”它): 我没有使用 JQuery 生成“last”类,而是简单地使用了内置的伪元素选择器:first-child。我建立了选择 tr:first-childtd:first-child 的规则,这些规则定义了 border-topborder-left (而不是像 GregL 的答案中的 border-rightborder-bottom)。通用规则定义 border-rightborder-bottom 而不是 border-leftborder-top:first-child 在 Chrome v. 4.0、Firefox v. 3.0、IE 7.0、Safari v. 3.1 和 Opera v. 9.6 () 中是 said to be supported。在 Firefox v. 40.0.3 上测试,我首先看到了这个问题。

【讨论】:

【参考方案8】:

为我实现了答案@Donald Payne

*(.table - 引导类)

table.table 
    border-collapse: separate !important;


table.table tr,
table.table th,
table.table td 
    border-right-width: 0 !important;
    border-bottom-width: 0 !important;
    border-left: 1px solid #DDD !important;
    border-top: 1px solid #DDD !important;


table.table td:last-child,
table.table th:last-child 
    border-right: 1px solid #DDD !important;


table.table tr:last-child td 
    border-bottom: 1px solid #DDD !important;


table.table 
    border: 0 !important;


table.table thead tr:last-child th,
table.table thead tr:last-child td 
  border-bottom: 1px solid #DDD !important;


table.table tbody tr:first-child th,
table.table tbody tr:first-child td 
  border-top-width: 0 !important;

【讨论】:

【参考方案9】:

这有点切题,但对于那些在 Firefox 中搜索缺失边框的人来说……

我有一个表格行 (&lt;tr&gt;) 的边框底部在特定单元格上设置了背景的位置丢失。原来这是由单元格上的流氓position: relative 引起的,将其删除(或将其更改为position: inherit)修复了它。

火狐 70.0.1

【讨论】:

以上是关于android 为啥没有边框的主要内容,如果未能解决你的问题,请参考以下文章

有没有一种简单的方法可以在 Android 视图的顶部和底部添加边框?

Android - 自定义视图边框

android黑色边框如何去掉

Android中图像视图的边框?

第三章,设置button边框(Android)

如何在 Android 中创建无边框按钮 [重复]