如何使用 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 &lt;style name="KeyboardKeyWhite" parent="Widget.AppCompat.TextView"&gt; 即可解决。

以上是关于如何使用 Android 样式来控制视图的 onClick 行为 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何控制 Android 视图中的轨迹球行为?

我可以使用 PHP 将 include_once 文件分配给 $var 吗?

如何在 iPhone 的 Three20 Thumbs 视图控制器中更改导航栏样式?

如何在 Rails 3.2.1 中使用控制器特定的样式表?

如何从 UITabBarController 页面导航到具有 PUSH 样式的另一个视图控制器

如何快速从另一个视图控制器重新加载表格视图