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);

見通し:

ここに画像の説明を入力ボタン: 有効

ここに画像の説明を入力ボタン: 無効 (文言は Listen NOT supported である必要があります...)

質問:

ボタンが無効になると、 を使用してボタンの背景が変更され.setBakgroundResource、ボタンの背景リソースが変更されますが、アイコンは上がります!

アイコンを元の場所にとどめ、ボタンの背景とテキストだけを変更するにはどうすればよいでしょうか? (少なくとも、アイコンはボタンの一番上まで移動しません)

ありがとう!

4

1 に答える 1

0

確かではありませんがpadding、 new を設定すると値が消去される可能性があると思いますLayoutParams。この行をコメントアウトすることで簡単に確認できます.-

speakBtn.setLayoutParams(params);

それが機能する場合は、その行の後にパディングを手動で設定してみてください.-

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

ところで、dimension値を dimens リソース ファイルに保存しておく必要があることを覚えておいてください (つまりdimens.xml)

于 2013-10-05T11:40:06.950 に答える