XML düzeninden şişirilen özel bir düğme oluşturdum. Her şey iyi çalışır, ancak tıklama dinleyicisi tetiklenmez.
android:clickable="true"
özniteliğiyle ilgili sorun olduğundan şüphelendiğimde, tıklatma dinleyicisi tetiklenir. Ancak bu özniteliğin benim özel görünümümün arka plan olarak bir seçici kullanması durumunda ayarlamam gerekiyor, eğer kaldırırsam, seçici artık çalışmayacak.OnClickListener Özel Görünüm için tetiklenmedi
public class CustomButton extends LinearLayout{
public CustomButton(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.custom_button, this, true);
TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CustomButton, 0, 0);
String titleStr = a.getString(R.styleable.CustomButton_title);
String subTitleStr = a.getString(R.styleable.CustomButton_subTitle);
int iconResId = a.getResourceId(R.styleable.CustomButton_icon, R.drawable.ic_launcher);
a.recycle();
TextView title = (TextView)findViewById(R.id.title);
title.setText(titleStr);
TextView subTitle = (TextView)findViewById(R.id.subTitle);
subTitle.setText(subTitleStr);
ImageView icon = (ImageView)findViewById(R.id.icon);
icon.setImageResource(iconResId);
}
}
XML düzeni özel görünüm seviyesine yükselir: Burada
sınıf tanımı var<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/white_box"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/main_button_selector"
android:clickable="true"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="icon"
android:layout_marginLeft="5dip"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginRight="5dip"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/grey_text"
android:textSize="@dimen/mainTextSize"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/subTitle"
android:ellipsize="end"
android:maxLines="2"
android:textColor="@color/grey"
android:textSize="@dimen/mainSubTextSize"/>
</LinearLayout>
</LinearLayout>
</FrameLayout>
Ve burada XML düzenleri kullanmak nasıl:
<com.customviews.CustomButton
android:id="@+id/pay"
android:layout_weight="1"
android:layout_width="0dip"
android:layout_height="fill_parent"
custom:title="Hello World"
custom:subTitle="Subtitle"
custom:icon="@drawable/ic_launcher"/>
ve etkinliğin tıklama dinleyicisini nasıl ayarladığı:
CustomButton button = (CustomButton) findViewById(R.id.pay);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MyActivity.this, "Hello World!", Toast.LENGTH_LONG).show();
Bu sorunu ele alan birkaç iş parçacığı gördüm, ancak bunlardan hiçbiri bana yardım etmedi. Herhangi bir yardım için minnettarım.
CustomButton'unuz LinearLayout'u genişletir. Ve bunun için bir onClickListener ayarlamaya çalışıyorsunuz. istediğin bir şey mi? – SKK
Evet, böyle bir şey. Ama bu arada CustomButton bir arka plan seçiciye sahip. –
Düğmeyi her yerde göremiyorum (true), normal mi? – wazaminator