如何将线性布局投射到按钮?
How to cast a Liner Layout to button?
我已经使用以下格式创建了一个使用线性布局的按钮....但是它给出了错误 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);
这是正确的方法吗..还是我犯了一些错误...?
嗯,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
}
});
不要将其转换为按钮,只需将 OnClickListener 设置为 LinearLayout。
LinearLayout add = (LinearLayout)findViewById(R.id.btn_add);
add.setOnClickListener(listener);
只允许在向上的层次结构中进行上层转换。 Button
永远不会位于 LinearLayout
的层次结构中。所以,你不能。
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
没办法做到这一点,它是一个完全不同的组件,按钮是 class 继承自 android.view.View ,但您可以将其用作按钮使用:
LinearLayout add = (LinearLayout) findViewById(R.id.btn_add);
btn_add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
I just want to add image and text in the button that's why i am doing
this.....is there any other way to do that..??
您可以使用按钮。文字可以用android:text
属性设置,图片可以用android:drawableTop
或android:drawableLeft
或android:drawableBottom
[=15=的组合]
<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>
从您的布局来看 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" />
如果您需要处理 on-click 事件,您可以为任何类型的视图执行此操作,而无需将其强制转换为 Button
。 setOnClickListener(...)
在 View
class 中定义 - 所有 Android 小部件的根 class,包括 Button
.
我已经使用以下格式创建了一个使用线性布局的按钮....但是它给出了错误 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);
这是正确的方法吗..还是我犯了一些错误...?
嗯,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
}
});
不要将其转换为按钮,只需将 OnClickListener 设置为 LinearLayout。
LinearLayout add = (LinearLayout)findViewById(R.id.btn_add);
add.setOnClickListener(listener);
只允许在向上的层次结构中进行上层转换。 Button
永远不会位于 LinearLayout
的层次结构中。所以,你不能。
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
没办法做到这一点,它是一个完全不同的组件,按钮是 class 继承自 android.view.View ,但您可以将其用作按钮使用:
LinearLayout add = (LinearLayout) findViewById(R.id.btn_add);
btn_add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
I just want to add image and text in the button that's why i am doing this.....is there any other way to do that..??
您可以使用按钮。文字可以用android:text
属性设置,图片可以用android:drawableTop
或android:drawableLeft
或android:drawableBottom
[=15=的组合]
<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>
从您的布局来看 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" />
如果您需要处理 on-click 事件,您可以为任何类型的视图执行此操作,而无需将其强制转换为 Button
。 setOnClickListener(...)
在 View
class 中定义 - 所有 Android 小部件的根 class,包括 Button
.