0

我在应用程序中有一个按钮调用某个功能,在此之前,系统会检查该特定功能是否可用,如果没有,它将实现以下内容:

XML:

    <Button
        android:id="@+id/button_speak"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="1dp"
        android:layout_weight="1"
        android:background="@drawable/purple_btn"
        android:drawableTop="@drawable/icon_headphones_btn"
        android:gravity="center"
        android:padding="15dp"
        android:text="Listen!"
        android:textColor="@color/black"
        android:textSize="20dp"
        android:textStyle="bold" />

代码:

                speakBtn.setEnabled(false);  
                speakBtn.setText("Speak NOT\nSUPPORTED");
                speakBtn.setBackgroundResource(R.drawable.grey_btn);
                speakBtn.setTextSize(12);

                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
                params.weight = 1;
                speakBtn.setLayoutParams(params);
                speakBtn.setGravity(Gravity.CENTER);

外表:

在此处输入图像描述按钮:启用

在此处输入图像描述按钮:禁用(措辞应该是不支持听...)

问题:

一旦按钮被禁用,按钮的背景通过使用更改.setBakgroundResource,然后按钮可以更改其背景资源,但图标会上升!

如何将图标设置为保持在原来的位置,而仅更改按钮上的背景和文本?(至少图标不会上升到按钮的顶部)

谢谢!

4

1 回答 1

0

不确定,但我敢打赌,padding在设置新的LayoutParams. 您可以通过注释掉这一行来轻松检查。-

speakBtn.setLayoutParams(params);

如果可行,您可以尝试在该行之后手动设置填充。-

speakBtn.setPadding(0, 15, 0, 0);

顺便说一句,请记住应该将您的dimension值存储在一个维度资源文件中(即dimens.xml

于 2013-10-05T11:40:06.950 回答