微调器点击效果不能包含里面的视图

时间:2014-12-16 01:26:05

标签: android android-layout android-widget

我正在开发一个Android应用程序。

我使用自定义Spinner进行选择。

我遇到了一个问题,就是当我按下Spinner时,Spinner里面的自定义视图

似乎无法选择

我希望效果可以包含内部的所有内容,而不仅仅是Spinner之外的内容。

喜欢

enter image description here

xml:

<Spinner
        android:id="@+id/calendars_spinner"
        android:focusable="true"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="12dip"
        android:layout_marginRight="12dip"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:paddingBottom="10dip"
        android:paddingTop="10dip"/>

Spinner适配器的getView

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = LayoutInflater.from(mContext.getApplicationContext());
        convertView = inflater.inflate(R.layout.calendar_spinner_item, parent,
                false);
        CalendarGroup group = groups.get(position);
        convertView.setBackgroundColor(group.getColor());

        TextView name = (TextView) convertView.findViewById(R.id.calendar_name);
        if (name != null) {
            String displayName = group.getGroupName();
            name.setText(displayName);

            TextView accountName = (TextView) convertView.findViewById(R.id.account_name);
            if (accountName != null) {
                accountName.setText(mEvent.getOwner());
                accountName.setVisibility(TextView.VISIBLE);
            }
        }
        convertView.setTag(position);
        return convertView;
    }

里面的视图(calendar_spinner_item.xml)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<TextView
    android:id="@+id/calendar_name"
    style="?android:attr/spinnerItemStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="end"
    android:singleLine="true"
    android:textColor="#FFFFFFFF"
    android:textSize="18sp" />

<TextView
    android:id="@+id/account_name"
    style="?android:attr/spinnerItemStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@id/calendar_name"
    android:layout_below="@id/calendar_name"
    android:ellipsize="marquee"
    android:singleLine="true"
    android:textColor="#FFFFFFFF"
    android:textSize="14sp" />

谢谢!

1 个答案:

答案 0 :(得分:1)

而不是: convertView.setBackgroundColor(group.getColor());

添加可选择的drawable:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:backround="@drawable/some_selectable_drawable>

这就是drawable应该是相似的:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_sel"
        android:state_selected="true" 
        android:state_pressed="true"/>
    <item android:drawable="@drawable/button_unsel" 
        android:state_selected="false" 
        android:state_pressed="false"/>
</selector>

或许最初只是尝试删除此#setBackgroundColor调用,看看会发生什么。

希望有所帮助

参考:Android button select and press drawable