我使用以下格式创建一个使用线性布局的按钮....但它给出了错误,android.widget.Button无法强制转换为android.widget.LinearLayout ......
<LinearLayout
android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/txt_empAddress"
android:layout_alignRight="@+id/txt_empAddress"
android:layout_below="@+id/vertical_line2"
android:layout_marginTop="28dp"
android:background="@android:drawable/btn_default"
android:clickable="true"
android:orientation="horizontal"
android:gravity="center" >
<ImageView
android:id="@+id/img_add"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:src="@drawable/ic_add" />
<TextView
android:id="@+id/txt_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="5dp"
android:text="Add" />
</LinearLayout>
我正在使用它将线性布局转换为按钮......
add = (Button)findViewById(R.id.btn_add);
这是正确的做法。或者我犯了一些错误......?
答案 0 :(得分:3)
我只想在按钮中添加图像和文字,这就是我为什么这么做的原因 这.....还有其他办法吗?? ??
您可以使用按钮。可以使用android:text
属性设置文字,对于图片,您可以使用android:drawableTop
或android:drawableLeft
或android:drawableBottom
android:drawableRight
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_add"
android:textColor="#FFFFFF"
android:id="@+id/ButtonTest"
android:text="this is text"></Button>
答案 1 :(得分:1)
好吧,btn_add
是LinearLayout
,为什么要将其声明为Button
?它必须像LinearLayout
那样声明:
LinearLayout add = (LinearLayout)findViewById(R.id.btn_add);
如果你想为它添加一个onClickListener,它将完美地运行而不会出现问题:
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
答案 2 :(得分:1)
不要将它强制转换为按钮,只需将OnClickListener设置为LinearLayout。
LinearLayout add = (LinearLayout)findViewById(R.id.btn_add);
add.setOnClickListener(listener);
答案 3 :(得分:1)
只允许向上施放层次结构。 Button
永远不会位于LinearLayout
的层次结构中。所以,你不能。
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
答案 4 :(得分:1)
无法做到这一点,它是一个完全不同的组件,按钮是从 android.view.View 继承的类,但你可以使用它作为按钮使用:
LinearLayout add = (LinearLayout) findViewById(R.id.btn_add);
btn_add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
答案 5 :(得分:1)
从你的布局XML我可以猜到你真正需要的是一个按钮,标题左边有一个图标。您可以使用标准drawableLeft
属性来实现此目的。简化您的布局:
<Button
android:layout_alignLeft="@+id/txt_empAddress"
android:layout_alignRight="@+id/txt_empAddress"
android:layout_below="@+id/vertical_line2"
android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="5dp"
android:drawableLeft="@drawable/ic_add"
android:text="Add" />
如果您需要处理点击事件,您可以针对任何类型的视图执行此操作,而无需将其转换为Button
。 View
类中定义了setOnClickListener(...)
- 所有Android小部件的根类,包括Button
。