【问题标题】:Android set border for button while selectedAndroid在选择时为按钮设置边框
【发布时间】:2015-04-13 13:22:52
【问题描述】:

我做了一个单选组并在里面放了一些按钮(不是单选按钮),这些按钮只有背景颜色。我想设置选中的第一个按钮,并在选中时为按钮设置边框。

<RadioGroup
    android:layout_width="fill_parent"
    android:layout_height="55dp"
    android:layout_below="@+id/textView_colour"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:orientation="horizontal">

    <Button
        android:layout_width="55dp"
        android:layout_height="55dp"
        android:id="@+id/button_yellow"
        android:layout_below="@+id/textView_colour"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:background="@drawable/button_yellow_effect"
        android:clickable="true"
        android:state_selected="true" />

    <Button
        android:layout_width="55dp"
        android:layout_height="55dp"
        android:id="@+id/button_pink"
        android:background="#ffff74c0"
        android:clickable="true"
        android:layout_alignTop="@+id/button_yellow"
        android:layout_toRightOf="@+id/button_yellow"
        android:layout_toEndOf="@+id/button_yellow"
        android:outlineProvider="bounds" />

    <Button
        android:layout_width="55dp"
        android:layout_height="55dp"
        android:id="@+id/button_green"
        android:background="#ff00ff18"
        android:clickable="true"
        android:layout_alignTop="@+id/button_pink"
        android:layout_toRightOf="@+id/button_pink"
        android:layout_toEndOf="@+id/button_pink"
        android:outlineProvider="bounds" />

    <Button
        android:layout_width="55dp"
        android:layout_height="55dp"
        android:id="@+id/button_red"
        android:background="#ffff0800"
        android:clickable="true"
        android:layout_alignTop="@+id/button_green"
        android:layout_toRightOf="@+id/button_green"
        android:layout_toEndOf="@+id/button_green"
        android:outlineProvider="bounds" />

    <Button
        android:layout_width="55dp"
        android:layout_height="55dp"
        android:id="@+id/button_blue"
        android:background="#ff1bb0ff"
        android:clickable="true"
        android:layout_alignTop="@+id/button_red"
        android:layout_toRightOf="@+id/button_red"
        android:layout_toEndOf="@+id/button_red"
        android:outlineProvider="bounds" />

    <Button
        android:layout_width="55dp"
        android:layout_height="55dp"
        android:id="@+id/button_purple"
        android:clickable="true"
        android:background="#ffe200ff"
        android:layout_alignTop="@+id/button_blue"
        android:layout_toRightOf="@+id/button_blue"
        android:layout_toEndOf="@+id/button_blue"
        android:outlineProvider="bounds" />
</RadioGroup>

我尝试在第一个按钮上使用选择器,但不起作用

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true">
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
            <stroke
            android:width="4dp"
            android:color="#1B5E91" />
        <solid
            android:color="#fffdff16"/>

        <size
            android:width="55dp"
            android:height="55dp" />
    </shape>
</item> <!-- pressed -->
<item android:background="#fffdff16" /> <!-- default -->

【问题讨论】:

  • 您是否将选择器设置为background 按钮?
  • 第一个按钮是的 android:background="@drawable/button_yellow_effect"
  • 您是否尝试通过添加android:state_selected="true" 来设置选中的按钮?
  • 对不起,我不确定设置按钮的正确方法是否被选中,我是 android 编程新手。

标签: android android-layout button android-studio radio-group


【解决方案1】:

state_selected最好不要自己设置——安卓系统会破坏你所有的工作逻辑。而不是这个尝试state_activated - 在布局xml和选择器中。当然,您也可以为state_selected 使用特殊的视图背景,但同样,不要尝试通过您的代码更改该状态。

【讨论】:

  • 我在布局和选择器中都把android:state_activated="true"改成了,但是还是不行,logcat什么也没说。
【解决方案2】:

确保使用 setSelected(); OnClick 方法中按钮的方法 Ex.

 button_yellow.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){

            button_yellow.setSelected(true);

        }

    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多