首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过灰显ImageView来模拟按下按钮的过程?

如何通过灰显ImageView来模拟按下按钮的过程?
EN

Stack Overflow用户
提问于 2018-06-20 09:13:11
回答 2查看 63关注 0票数 2

我想在我的屏幕底部创建一个控制面板,看起来像这样。

这是图片

我想要模拟按钮按下,点击的项目是黑色的,所有没有点击的都是灰色的。如图所示,图片图标已被点击。

目前,我的解决方案是覆盖两行相同的ImageViews。一层由所有黑色图标组成,另一层由所有灰色图标组成。当我点击一张图片时,我运行的代码如下所示:

代码语言:javascript
复制
private void galleryClicked() {
        mGalleryImageView_unclicked.setVisibility(View.INVISIBLE);
        mPersonalImageView_unclicked.setVisibility(View.VISIBLE);
        mExploreImageView_unclicked.setVisibility(View.VISIBLE);
        mMenuImageView_unclicked.setVisibility(View.VISIBLE);

        mGalleryImageView_clicked.setVisibility(View.VISIBLE);
        mPersonalImageView_clicked.setVisibility(View.INVISIBLE);
        mExploreImageView_clicked.setVisibility(View.INVISIBLE);
        mMenuImageView_clicked.setVisibility(View.INVISIBLE);
    }

我只是想知道是否有更有效或更好的方法来做这件事。当我在我的手机上运行它时,可以感觉到响应中的一些延迟。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-20 09:33:21

您可以将Radiobuttons与RadioGroup一起使用,并且每个RadioButton都有自己的选择器Drawable。然后RadioGroup将为您进行选择(选中一个将取消选中所有其他选项)。

示例代码:

代码语言:javascript
复制
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RadioGroup
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/item_one"
            style="@style/TabItem"
            android:checked="true"
            android:drawableTop="@drawable/selector_tab_item_one" />

        <RadioButton
            android:id="@+id/item_two"
            style="@style/TabItem"
            android:drawableTop="@drawable/selector_tab_item_two" />

        <RadioButton
            android:id="@+id/item_three"
            style="@style/TabItem"
            android:drawableTop="@drawable/selector_tab_item_three" />

        <RadioButton
            android:id="@+id/item_four"
            style="@style/TabItem"
            android:drawableTop="@drawable/selector_tab_item_four"/>
    </RadioGroup>

</RelativeLayout>

res/values/styles.xml中声明@style/TabItem

代码语言:javascript
复制
<style name="TabItem" parent="android:style/Widget.Holo.Light.TextView">
    <item name="android:layout_width">0dp</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_weight">1</item>
    <item name="android:paddingTop">15dp</item>
    <item name="android:drawablePadding">1dp</item>
    <item name="android:button">@null</item>
    <item name="android:background">@null</item>
    <item name="android:gravity">bottom|center_horizontal</item>
</style>

选择器Drawable如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/item_one_highlighted" android:state_checked="true"/>
    <item android:drawable="@drawable/item_one_highlighted" android:state_pressed="true"/>
    <item android:drawable="@drawable/item_one_default" />
</selector>

结果:

票数 0
EN

Stack Overflow用户

发布于 2018-06-20 09:21:49

我有更好的解决方案,那就是使用选择器。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/clicked" android:state_enabled="true" />
    <item android:drawable="@drawable/unclicked" android:state_enabled="false" />
</selector>

所以现在只需设置mGalleryImageView.setEnabled(true);mGalleryImageView.setEnabled(false)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50938870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档