可扩展标记语言(XML)是一种灵活的结构化文档格式,用于定义人类和机器可读的编码规则。
我正在尝试创建这种效果 我正在使用回收器视图,但我的问题是,每张卡片都是屏幕宽度的 100%,而不是 70%。 这是每个项目的 xml 代码 我正在尝试创建这种效果 我正在使用回收器视图,但我的问题是每张卡片都是屏幕宽度的 100%,而不是 70%。 这是每个项目的 xml 代码 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rowLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/scale_20dp"> <LinearLayout android:id="@+id/button_parent" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <android.support.v7.widget.CardView android:id="@+id/card_view" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/currentYear" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:background="@drawable/paymentscreengrey" android:gravity="center" android:orientation="vertical" android:paddingLeft="35dp" android:paddingTop="@dimen/scale_50dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/scale_20dp" android:text="**** **** **** 5432" android:textColor="@color/white" android:textSize="@dimen/scale_20dp" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="2345" android:textColor="@color/white" android:textSize="@dimen/scale_16dp" /> 如果您希望第一个项目左对齐(即重现屏幕截图中的内容),请子类 LinearLayoutManager 并重写三个 generate*LayoutParams 方法。我是这样做的:https://gist.github.com/bolot/6f1838d29d5b8a87b5fcadbeb53fb6f0. class PeekingLinearLayoutManager : LinearLayoutManager { @JvmOverloads constructor(context: Context?, @RecyclerView.Orientation orientation: Int = RecyclerView.VERTICAL, reverseLayout: Boolean = false) : super(context, orientation, reverseLayout) constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) override fun generateDefaultLayoutParams() = scaledLayoutParams(super.generateDefaultLayoutParams()) override fun generateLayoutParams(lp: ViewGroup.LayoutParams?) = scaledLayoutParams(super.generateLayoutParams(lp)) override fun generateLayoutParams(c: Context?, attrs: AttributeSet?) = scaledLayoutParams(super.generateLayoutParams(c, attrs)) private fun scaledLayoutParams(layoutParams: RecyclerView.LayoutParams) = layoutParams.apply { when(orientation) { HORIZONTAL -> width = (horizontalSpace * ratio).toInt() VERTICAL -> height = (verticalSpace * ratio).toInt() } } private val horizontalSpace get() = width - paddingStart - paddingEnd private val verticalSpace get() = height - paddingTop - paddingBottom private val ratio = 0.9f // change to 0.7f for 70% } 此解决方案基于跨度(即,使所有项目适合屏幕)线性布局管理器/受到启发https://gist.github.com/heinrichreimer/39f9d2f9023a184d96f8。 顺便说一句,如果您只想向左和向右显示项目,而当前项目居中,则可以向回收器视图添加填充并将 clipToPadding 设置为 false。在这种情况下,您甚至不需要自定义布局管理器。 <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:paddingStart="16dp" android:paddingEnd="16dp" android:clipToPadding="false" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"> 我需要让水平 RecyclerView 中的项目达到 RecyclerView 宽度的 70%。可以轻松完成onCreateViewHolder(): override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view = LayoutInflater.from(context).inflate(R.layout.row, parent, false); view.layoutParams = ViewGroup.LayoutParams((parent.width * 0.7).toInt(),ViewGroup.LayoutParams.MATCH_PARENT) return ViewHolder(view); } 有两种方法可以做到这一点。 1)为回收视图使用自定义视图。 重写 onMeasure 以将其宽度返回为屏幕的 70%。 2)在 Recycler View 适配器中,创建视图时将其宽度设置为屏幕宽度的 70%。 无论哪种情况,您都可以从显示屏获取屏幕尺寸,只需将宽度乘以 0.7 即可。 在第一种情况下,您将其设置为精确测量的宽度,在第二种情况下,您将其设置在布局参数中。 第二个可能更容易一些。 我遇到了类似的问题,我有一个带有水平 RecyclerView 的片段,并希望每个视图项的宽度为用户屏幕的三分之一。通过在 ViewHolder 类的构造函数中添加以下内容来解决这个问题(在我的例子中,我希望每个视图持有者是屏幕的 1/3 而不是 70%): private class OurViewHolder extends RecyclerView.ViewHolder { ... public OurViewHolder (LayoutInflater inflater, ViewGroup parent) { super (inflater.inflate (R.layout.list_item_layout, parent, false)); // This code is used to get the screen dimensions of the user's device DisplayMetrics displayMetrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); int width = displayMetrics.widthPixels; int height = displayMetrics.heightPixels; // Set the ViewHolder width to be a third of the screen size, and height to wrap content itemView.setLayoutParams(new RecyclerView.LayoutParams(width/3, RecyclerView.LayoutParams.WRAP_CONTENT)); ... } ... 对于 row.xml 父级,您必须使用 wrap_content 作为其宽度,然后添加此属性。 android:paddingLeft="25dp" 你会得到同样的结果 刚刚从this答案中更新了一点,添加了边距并从资源中获取了displayMetrics以使其干净: inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bind(product: StyleMaster) = with(itemView) { val width = context.resources.displayMetrics?.widthPixels if (width != null) { val params = RecyclerView.LayoutParams(width / 2, RecyclerView.LayoutParams.WRAP_CONTENT) params.setMargins(2, 2, 2, 2) itemView.layoutParams = params } // Rest of the code goes here... @NonNull @Override public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.list_item_layout,parent,false); ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); layoutParams.width = (int) (parent.getWidth() * 0.7); view.setLayoutParams(layoutParams); return new MyHolder(view); } 尝试用 LinearLayout 更改 PercentRelativeLayout 以“包裹”RecyclerView,然后将其宽度设置为 70%。 更改此: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/rv" /> </LinearLayout> 有了这个: <android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:layout_width="0dp" android:layout_height="match_parent" app:layout_widthPercent="70%" android:id="@+id/rv" /> 编辑 由于 Percent 支持库随 Android 支持库 23 一起提供,因此请确保您已将 SDK Manager 中的 Android 支持库更新到最新版本(实际上是 24)。然后在 build.gradle 文件中添加如下所示的依赖项: compile 'com.android.support:percent:24.0.0'
当我向我的 twilio 电话号码发送短信时,我在日志中看到: 错误:11200 HTTP 检索失败 描述:尝试从 https://xxx.xxx.com/extapi/twilio-php/twi 检索内容...
更新: 我不知道使用以下结构过滤两个条件的语法。 我需要选择一个特定的 更新: 我不知道使用以下结构过滤两个条件的语法。 我需要在名为 <a class="_1ufH4" href="ELEMENT of INTEREST"> 的节点之一中选择一个特定的 <div class="_1rOLI _My0B"> 仅当满足以下两个条件时: <h2 class="_2MeiE">PARIS</h2> <div class="_16U2O typography-h220">20:30</div> <root> <div class="_13nA5"> <section role="none" class="_29N96"> <div class="SppyD"> <div class="_2Bl6B"> <img src="https://example" alt="" width="20" height="20"> </div> <h2 class="_2MeiE">LONDON</h2> </div> <div class="_26Fte"> <div class="_1rOLI _My0B"> <div class="_2VB9y"> <div class="_18IfB"> <div class="_3u6AO"> <a class="_1ufH4" href="ELEMENT of INTEREST"> <div class="_2AdVd"> <div class="Xi8qr"> <div class="_16U2O typography-h220">14:30</div> </div> </div> </a> </div> </div> </div> </div> <div class="_1rOLI _My0B"> <div class="_2VB9y"> <div class="_18IfB"> <div class="_3u6AO"> <a class="_1ufH4" href="ELEMENT of INTEREST"> <div class="_2AdVd"> <div class="Xi8qr"> <div class="_16U2O typography-h220">15:30 2</div> </div> </div> </a> </div> </div> </div> </div> </div> </div> </section> </div> <div class="_13nA5"> <section role="none" class="_29N96"> <div class="SppyD"> <div class="_2Bl6B"> <img src="https://example" alt="" width="20" height="20"> </div> <h2 class="_2MeiE">PARIS</h2> </div> <div class="_26Fte"> <div class="_1rOLI _My0B"> <div class="_2VB9y"> <div class="_18IfB"> <div class="_3u6AO"> <a class="_1ufH4" href="ELEMENT of INTEREST"> <div class="_2AdVd"> <div class="Xi8qr"> <div class="_16U2O typography-h220">20:30</div> </div> </div> </a> </div> </div> </div> </div> <div class="_1rOLI _My0B"> <div class="_2VB9y"> <div class="_18IfB"> <div class="_3u6AO"> <a class="_1ufH4" href="ELEMENT of INTEREST"> <div class="_2AdVd"> <div class="Xi8qr"> <div class="_16U2O typography-h220">16:30</div> </div> </div> </a> </div> </div> </div> </div> </div> </div> </section> </div> <root/> 我遇到过“前面的兄弟姐妹”,但我不知道如何根据我给你的两个条件的位置来选择感兴趣的元素。 如果我理解正确的话 //section[contains(.,"PARIS")]//a[@class="_1ufH4" and contains (.//div,"20:30")] 您可以进一步自定义第一个 contains 参数以获得更多独特性
logcat 中的错误“无法从‘启动屏幕’读取 id 信息”是什么?
我在 Logcat 中有这个 2023-12-24 09:22:43.666 959-1051 BufferQueueDebug pid-959 E [启动屏幕 com.omarhadjsaiddev.qtappmanager#0](this:0xb40000780f8578d0,...
我需要实施 EBICS 协议,特别是 HPB 请求,并且我需要签署我的 XML 文件: 我需要实施 EBICS 协议,特别是 HPB 请求,并且我需要签署我的 XML 文件: <?xml version="1.0" encoding="UTF-8"?> <ebicsNoPubKeyDigestsRequest xmlns="http://www.ebics.org/H003" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ebics.org/H003 http://www.ebics.org/H003/ebics_keymgmt_request.xsd" Version="H003" Revision="1"> <header authenticate="true"> <static> <HostID>EBIXQUAL</HostID> <Nonce>234AB2340FD2C23035764578FF3091C1</Nonce> <Timestamp>2015-11-13T10:32:30.123Z</Timestamp> <PartnerID>AD598</PartnerID> <UserID>EF056</UserID> <OrderDetails> <OrderType>HPB</OrderType> <OrderAttribute>DZHNN</OrderAttribute> </OrderDetails> <SecurityMedium>0000</SecurityMedium> </static> <mutable /> </header> </ebicsNoPubKeyDigestsRequest> 所以我需要对元素进行签名 验证=“真” 为了用 C# 签署我的文档,我编写了以下代码: XmlDocument xmlDoc = new XmlDocument(); xmlDoc.PreserveWhitespace = false; xmlDoc.Load("hpbtest.xml"); RSA Key = new GestionCertificat("CN=XML_ENC_TEST_CERT4").getClePrivee(); // Create a SignedXml object. SignedXml signedXml = new SignedXml(xmlDoc); // Add the key to the SignedXml document. signedXml.SigningKey = Key; // Create a reference to be signed. Reference reference = new Reference(); reference.Uri = "#xpointer(//*[@authenticate='true'])"; // Add an enveloped transformation to the reference. XmlDsigExcC14NTransform env = new XmlDsigExcC14NTransform(); reference.AddTransform(env); // Add the reference to the SignedXml object. signedXml.AddReference(reference); // Compute the signature. signedXml.ComputeSignature(); // Get the XML representation of the signature and save // it to an XmlElement object. XmlElement xmlDigitalSignature = signedXml.GetXml(); // Append the element to the XML document. xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true)); xmlDoc.Save("hpbtest.xml"); 但是当我尝试签名时,我在网上收到此错误 signedXml.ComputeSignature() : 参考元素不正确 您能帮我解决我的问题吗? 提前谢谢您! 托马斯! 我通过 SignedXml 和 Reference 类对 XPointer 操作进行了逆向工程,并且..我可以在单独的答案中为您提供所有详细信息,但我现在的结论是,您只能有两种类型的查询: #xpointer(/) 这是有效的,因为它被明确检查,并且 #xpointer(id( 再次明确(使用 string.StartsWith)检查。 因此,正如您在评论中指出的那样,实现此目的的唯一方法似乎是扩展 SignedXml 类并重写 GetIdElement 方法,如下所示: public class CustomSignedXml : SignedXml { XmlDocument xmlDocumentToSign; public CustomSignedXml(XmlDocument xmlDocument) : base(xmlDocument) { xmlDocumentToSign = xmlDocument; } public override XmlElement GetIdElement(XmlDocument document, string idValue) { XmlElement matchingElement = null; try { matchingElement = base.GetIdElement(document, idValue); } catch (Exception idElementException) { Trace.TraceError(idElementException.ToString()); } if (matchingElement == null) { // at this point, idValue = xpointer(//*[@authenticate='true']) string customXPath = idValue.TrimEnd(')'); customXPath = customXPath.Substring(customXPath.IndexOf('(') + 1); matchingElement = xmlDocumentToSign.SelectSingleNode(customXPath) as XmlElement; } return matchingElement; } } 然后在消费者代码中,只需将SignedXml更改为CustomSignedXml即可: CustomSignedXml signedXml = new CustomSignedXml(xmlDoc);
EBICS 3.0 架构 H005 [EBICS_INVALID_XML] 根据 EBICS XML 架构,XML 无效
我尝试实施 EBICS 3.0 通信,但无法正确发送我的 INI 请求。 我使用 NodeJS Ebics 客户端 (https://github.com/eCollect/node-ebics-client) 我尝试编辑以使用 H005 方案...
需要有关将 xml 转换为特定 json 结构的帮助。 XML 看起来像这样, 1 2014年10月26日 ...
使用 NSXMLParser 处理 XML 属性中的特殊字符
我从第三方 API 得到类似以下内容: 我使用 NSXMLParser 将文件读入我的应用程序。 然而,在委托中,该属性得到
我正在尝试获取所有 car2go 汽车的列表并将其用于测试应用程序,唯一的问题是我不知道如何获取信息。我已经获得了消费者密钥和秘密密钥,但 p...
我目前正在尝试解析来自 STANDS4 API 的剩余 XML API 响应... XML 文件看起来像这样: 自由并非如此
从我的浏览器中,我以字符串形式发送以下有效负载, 注意 Sql 的值如何有...
我有一个xml文件,想按dateB对数据进行排序,如果存在,如果不存在,则按dateA排序 例如,对于 titi,我们将使用 dateA,对于 toto,我们将使用 dateB 比较它们并对文件进行排序以制作 titi
我是 Odoo 新手。我正在尝试在 odoo 17.0 的 oe-chatter 顶部栏中添加一个新按钮 我发现chatter.xml(https://github.com/odoo/odoo/blob/17.0/addons/mail/static/src/core/web/chatter.xml)
我是 Odoo 新手。我正在尝试在 odoo 17.0 的 oe-chatter 顶部栏中添加一个新按钮 我发现chatter.xml(https://github.com/odoo/odoo/blob/17.0/addons/mail/static/src/core/web/chatter.xml)
我在mlcp导出命令中使用了密文选项 当 XML 文件第二行以 PI 开头时,我收到一个错误: [1.0-ml] RDT-NODE:(错误:FOER0000)不支持的节点类型:仅 XML 文档...
在代码中删除字段并查看Odoo后如何避免“模型中不存在字段”错误
在Code和XML中删除字段时,有没有办法避免模型中不存在字段错误?所以我的问题是,当我尝试删除一个字段并且已经有一个现有的数据库时......
任何人都使用过 android-target-instructions 并添加了一个跳过按钮来跳过剩余步骤
我正在尝试实现 android-target-instructions 库,当用户单击库中的跳过按钮时,我想跳过它,它说 .finish() 要跳过,但没有发生任何事情,有人可以帮忙吗? 我...
无法启动指定代理配置文件的 ActiveMQ Classic
我正在关注 Manning 发布的《ActiveMQ in Action》。我已在 Windows VM 中使用 Maven 成功构建了源代码“amq-in-action-example-src”。我使用的是与
我在想(危险),大多数网页都是“好的内容”,周围是“垃圾”、广告、追加销售等。搜索引擎知道这一点,他们看到垃圾并提取他们想要的信息...