android listview 如何实现这种圆角和按下的效果,送分题又来了,求高手快来拿分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android listview 如何实现这种圆角和按下的效果,送分题又来了,求高手快来拿分相关的知识,希望对你有一定的参考价值。

如何实现这种圆角的效果,如上可以看出已经超过6条记录,我在网上找的listView圆角都是第一条和最后一条是圆角的,那他这个即使不是最后一条也圆角如何实现(高度是固定的的情况下,当超过当前高度后超过的ListView会被隐藏起来,然而下角的最外层还是圆角的)。如图:

还有就是当按钮按下的时候改变了当前item的样式,可是该item已经超过当前listView的宽度,如何实现这种效果

如果答得好的追加,有例子最好。。

靠布局和一点小逻辑就可以做到,具体就是列表正文其实左右有个Margin值,而上面的透明覆盖层,左右是抵满的,这样一来就很简单了。


可以看我附件的demo,颜色我没调好,我很不擅长调颜色。但是效果差不多的。

参考技术A http://blog.csdn.net/jj120522/article/details/7944484
好好看看这个例子 ~~~追问

这个例子我看过可是它是最后一条才圆角,我要的是不是最后一条就是超出listView的下部分边缘也圆角如图所示

还有就是当按钮按下的时候改变了当前item的样式,可是该item已经超过当前listView的宽度,如何实现这种效果

SwiftUI:如何获得完美圆角的视图

【中文标题】SwiftUI:如何获得完美圆角的视图【英文标题】:SwiftUI: How to Get a View with Perfectly Rounded Corners 【发布时间】:2019-11-24 02:34:07 【问题描述】:

使用 UIKit,可以使用这种方法为控件(例如按钮)提供完美的圆角(在每一侧产生一个圆圈):

exampleButton.cornerRadius = exampleButton.frame.size.height/2

如何使用 SwiftUI 视图实现相同的结果?

因为视图是动态定义的,所以我不确定如何引用该帧大小,除非它是手动设置的(这不是这里的愿望)。

Button(action: 
    // ...
) 
    Text("I'm a Button")

.cornerRadius(???)

【问题讨论】:

【参考方案1】:

另一个解决方案是使用形状,在本例中为 Capsule 形状,并使用 clipShape 修饰符

以前面提到的例子为例,应该是这样的:

Button(action: 
// ...
) 
Text("I'm a Button")
    .padding(.horizontal, 10)
    .background(Color.red)
    .clipShape(Capsule())

可以调整其中的填充,以便您的视图看起来像您想要的那样。胶囊将始终具有完美圆形的末端。在这种情况下,我不希望文本太靠近圆边,所以我在边上应用了一些填充。

需要记住的一点是,在 SwiftUI 中,修饰符的应用顺序非常重要。

【讨论】:

谢谢。是的,这是一个更加优雅的解决方案。自从发布此问题以来,它恰好是我已经在自己的代码中切换到的一个。感谢提醒。【参考方案2】:

您需要将其定义为正方形,然后在角上进行四舍五入,如下所示:

Button(action: 
// ...
) 
Text("I'm a Button")
    .frame(width:150, height:150)
    .background(Color.red)
    .cornerRadius(.infinity)


PS。为可见性添加了一些背景颜色

【讨论】:

谢谢! .infinity 参数是我缺少的部分。仅供参考,如果这是所需的行为,您也可以在不设置固定大小的情况下实现正方形:.aspectRatio(1, contentMode: .fit) 【参考方案3】:

另一种解决方案是使用geometry reader,它将获取屏幕的高度或宽度,并允许您对其进行除法、乘减或加法。

使用示例,它会是这样的:

Geometry Reader  Geometry in
Button(action: 
    // ...
) 
    Text("I'm a Button")

.cornerRadius(geometry.size.width / 2)


frame.size.height最相似。

【讨论】:

【参考方案4】:

在 XCode 12.4 中工作

对于任何发现此问题并试图了解如何制作圆角按钮(无论是否完全像胶囊一样)的人:

            Button(action: 
                // Do whatever
            ) 
                Spacer()
                Text("Log In")
                    .font(.title2)
                    .padding()
                    .foregroundColor(.white)
                Spacer()
            
            .background(Color(UIColor.systemBlue))
            .clipShape(RoundedRectangle(cornerRadius: 12))
            .padding()

无需担心叠加形状。

【讨论】:

谢谢,但这实际上并没有解决问题的核心,即如何专门设置圆角半径以精确地圆边。我在原始问题中引用了cornerRadius,所以除了clipShape 的一个额外层之外,这个额外的代码并没有真正添加任何东西,这并没有增加价值——只是额外的开销——除非你想使用Capsule() .

以上是关于android listview 如何实现这种圆角和按下的效果,送分题又来了,求高手快来拿分的主要内容,如果未能解决你的问题,请参考以下文章

listview的圆角背景图+listitem整体为圆角如何实现?

Android ListView圆角

Android 圆角的效果实现

listview android studio中每个条目的圆角

Android 高级UI设计笔记18:实现圆角图片

在listView中的图片如何设置圆角