如何使用 Android 样式来控制视图的 onClick 行为 [重复]
Posted
技术标签:
【中文标题】如何使用 Android 样式来控制视图的 onClick 行为 [重复]【英文标题】:How to use Android style to control Views' onClick behavior [duplicate] 【发布时间】:2020-03-02 06:21:24 【问题描述】:我想让按钮看起来一样,即使它被按下。例如,如果我按下按钮或任何其他视图,绿色按钮变为灰色,或者如果有视图覆盖视图,则下视图变为上视图。此外,还会出现阴影。是否可以制作工作按钮(或视图)但在视觉上不可点击?布局和样式 XMLs https://drive.google.com/open?id=1lizFYOKbwWdtRQw2Z4SV-tZKjLWwHPWY
【问题讨论】:
对不起,也许它会回答,但我不明白。我尝试了一些东西,但没有任何改变。我会将我的布局和样式 xml 上传到已编辑的帖子。 【参考方案1】:尝试将您的样式更改为以下(基本上删除父部分)
<style name="KeyboardKeyWhite" >
<item name="android:background">@android:color/white</item>
<item name="android:layout_margin">2dp</item>
</style>
<style name="KeyboardKeyBlack" >
<item name="android:background">@android:color/black</item>
<item name="android:layout_margin">2dp</item>
<item name="layout_constraintWidth_percent">0.08</item>
</style>
更多
虽然以上回答了您提出的问题,但您可以根据自己的风格做更多事情。例如,您可以在样式中添加尺寸信息,从而减少布局文件的长度。此外,您可以重构尺寸样式:
<!-- Parent style for keyboard keys. -->
<style name="keyboardKey">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">0dp</item>
</style>
<!-- KeyWhite inherits from keyboardKey. -->
<style name="keyboardKey.KeyWhite" >
<item name="android:background">@android:color/white</item>
<item name="android:layout_margin">2dp</item>
</style>
<!-- KeyBlack inherits from keyboardKey. -->
<style name="keyboardKey.KeyBlack" >
<item name="android:background">@android:color/black</item>
<item name="android:layout_margin">2dp</item>
<item name="layout_constraintWidth_percent">0.08</item>
</style>
然后在您的布局文件中,调用将如下所示,例如:
<TextView
android:id="@+id/TextView7"
style="@style/keyboardKey.KeyWhite"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/TextView6"
app:layout_constraintTop_toTopOf="@id/topGuideline" />
【讨论】:
很高兴听到!如果您想更深入地了解样式,我已经为您添加了更多内容。它们对于减小布局文件的大小非常方便。 非常感谢。感谢您的努力:)【参考方案2】:它需要看起来像一个按钮吗?您可以使用任何视图(或至少大多数)来触发 onClick 方法,也许只使用 Textview?您需要做的就是编写方法并将其分配给要触发它的View的onClick。
【讨论】:
感谢您的回答,但不,它不适用于我的情况。看看我将在编辑后的帖子上上传的代码。它们是样式和布局 xml。 你可以将android:onClick="METHOD_NAME"
添加到你的布局xml中的任何一个TextView中
我的意思是,白钢琴键比黑键高,然后你按下它。只要试试我的代码,你就会明白我的意思。
好的,我明白了。您可以设置 android:clickable="false"
来停止它,但如果您设置了 onClick 方法,它就会被覆盖。问题出在您的父定义中,将其从按钮更改为 Textview <style name="KeyboardKeyWhite" parent="Widget.AppCompat.TextView">
即可解决。以上是关于如何使用 Android 样式来控制视图的 onClick 行为 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用 PHP 将 include_once 文件分配给 $var 吗?
如何在 iPhone 的 Three20 Thumbs 视图控制器中更改导航栏样式?