我有一個自定義的LinearLayout視圖,其中只有一個TextView和一個CheckBox。我似乎無法讓複選框在佈局的任何部分被選中時切換。我搜索了四周,大部分我看到的是將CheckBox上的可聚焦屬性設置爲false,而我已經完成了這些。通過單擊行佈局切換複選框
我有一個類似的組件與兩個文本視圖,並onClick作品。
佈局:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:descendantFocusability="beforeDescendants"
android:orientation="horizontal" >
<TextView
android:id="@+id/probe_item_label"
style="@style/Probe.Item.Text.Label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginBottom="3dp"
android:layout_weight="0" />
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<CheckBox
android:id="@+id/probe_item_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_weight="0"
android:focusable="false"
android:focusableInTouchMode="false" />
</LinearLayout>
類:
public class ProbeItemCheckBox extends LinearLayout
{
LinearLayout mLayout = null;
TextView mLabelTextView = null;
CheckBox mCheckbox = null;
Context mContext = null;
public ProbeItemCheckBox(Context context)
{
super(context);
}
public ProbeItemCheckBox(Context context, AttributeSet attrs)
{
super(context, attrs);
mContext = context;
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ProbeText);
final String labelText = a.getString(R.styleable.ProbeText_labelText);
String service = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater li = (LayoutInflater) getContext().getSystemService(service);
mLayout = (LinearLayout) li.inflate(R.layout.probe_item_checkbox, this, true);
// layout.setDescendantFocusability(FOCUS_BEFORE_DESCENDANTS);
mLabelTextView = (TextView)mLayout.findViewById(R.id.probe_item_label);
mCheckbox = (CheckBox)mLayout.findViewById(R.id.probe_item_checkbox);
mCheckbox.setFocusable(false);
mCheckbox.setFocusableInTouchMode(false);
mLabelTextView.setText(labelText);
mLabelTextView.setClickable(false);
mCheckbox.setClickable(false);
mLayout.setClickable(true);
mLayout.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
mCheckbox.toggle();
}
});
a.recycle();
}
...
}
你可以提供任何幫助,將不勝感激。
你說的切換是什麼意思? – Chitrang
@Chitrang切換該行中的複選框未選中時的意思,單擊該行中的任意位置將檢查框,同樣取消選中。 –