1. ホーム
  2. android

[解決済み] アイコンとテキストで構成されるAndroidボタン

2022-10-18 01:16:34

質問

私のアプリには、このようなボタンがいくつかあります。

    <Button
        android:id="@+id/bSearch"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:text="Search"
        android:textSize="24sp" />

私はテキストとアイコンを持つ同じボタンを作成しようとしています。 android:drawableLeftは私のために動作しません(多分そうでしょうが、私はアイコンに最大高さを設定する方法を知りません)。

そこで、ImageViewとTextViewでLinearLayoutを作成し、ボタンのように動作させるようにしました。

    <LinearLayout
        android:id="@+id/bSearch2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/btn_default"
        android:clickable="true"
        android:padding="16dp"
        android:orientation="horizontal" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="5dp"
            android:adjustViewBounds="true"
            android:maxHeight="30dp"
            android:maxWidth="30dp"
            android:scaleType="fitCenter"
            android:src="@drawable/search_icon" />

        <TextView
            android:id="@+id/tvSearchCaption"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:textSize="24sp"
            android:paddingRight="30dp"
            android:gravity="center"
            android:text="Search" />
    </LinearLayout>

私の新しいボタンはまさに私が欲しいもの(フォントサイズ、アイコン、テキストの配置)です。 しかし、それは私のデフォルトのボタンのように見えることはありません。

そこで、新しいボタンの背景色と文字色を変更しようとしました。

Button Search = (Button) findViewById(R.id.bSearch);
LinearLayout bSearch2 = (LinearLayout) findViewById(R.id.bSearch2);
bSearch2.setBackground(bSearch.getBackground());
TextView tvSearchCaption = (TextView)findViewById(R.id.tvSearchCaption);
tvSearchCaption.setTextColor(bSearch.getTextColors().getDefaultColor());

これは奇妙な結果をもたらします、私の古いボタンは、台無しにされます。

XML でこれら 2 つのボタンの順序を変更し、" new button" が最初に来るようにすると、別の奇妙な結果が生じます。

古いボタンを押そうとすると、新しいボタンが押されることに気づきました。

何か思い当たることはありますか?

どのように解決するのですか?

こちらをお試しください。

<Button
    android:id="@+id/bSearch"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:text="Search"
    android:drawableLeft="@android:drawable/ic_menu_search"
    android:textSize="24sp"/>