我在应用程序中有一个调用某个功能的按钮,在此之前,系统将检查该特定功能是否可用,如果没有,它将实现以下功能:
<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);
按钮:已启用
按钮:已禁用(措辞应为Listen not supported ...)
按钮被禁用后,使用.setBakgroundResource
更改按钮的背景,然后按钮可以更改其背景资源,但图标会上升!
如何将图标设置为原来的位置,只是背景和按钮上的文字被更改? (至少图标不会到达按钮的顶部)
谢谢!
答案 0 :(得分:0)
不确定,但我的赌注是在设置新padding
时可能会删除LayoutParams
值。您可以通过注释掉这一行来轻松检查.-
speakBtn.setLayoutParams(params);
如果有效,您可以尝试在该行之后手动设置填充.-
speakBtn.setPadding(0, 15, 0, 0);
顺便提一下,请记住,应将dimension
值保存在维度资源文件中(即dimens.xml
)