私のアプリには次のようなボタンがいくつかあります。
<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つのボタンの順序を変更して、「新しいボタン」が最初に表示されると、別の奇妙な結果になります。
古いボタンを押そうとすると、新しいボタンが押されることに気づきました。
何か案は?