【发布时间】:2014-05-22 20:48:57
【问题描述】:
我的应用中有一些这样的按钮:
<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 中更改这两个按钮的顺序时,“新按钮”先出现,这会产生另一个奇怪的结果:
现在我注意到,当我尝试按下旧按钮时,新按钮会被按下。
有什么想法吗?
【问题讨论】:
标签: android android-layout android-button