【问题标题】:How to use Android style to control Views' onClick behavior [duplicate]如何使用 Android 样式来控制视图的 onClick 行为 [重复]
【发布时间】:2020-03-02 06:21:24
【问题描述】:

我想让按钮看起来一样,即使它被按下。例如,如果我按下按钮或任何其他视图,绿色按钮变为灰色,或者如果有视图覆盖视图,则下视图变为上视图。此外,还会出现阴影。是否可以制作工作按钮(或视图)但在视觉上不可点击?布局和样式 XMLs https://drive.google.com/open?id=1lizFYOKbwWdtRQw2Z4SV-tZKjLWwHPWY

【问题讨论】:

  • 对不起,也许它会回答,但我不明白。我尝试了一些东西,但没有任何改变。我会将我的布局和样式 xml 上传到已编辑的帖子。

标签: android xml android-studio android-layout view


【解决方案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; 即可解决。
猜你喜欢
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
  • 2012-04-11
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
相关资源
最近更新 更多