【问题标题】:Spinner click effect can't include the view inside微调器点击效果不能包含里面的视图
【发布时间】:2014-12-16 01:26:05
【问题描述】:

我正在开发一个安卓应用。

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

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

似乎无法选择。

我希望效果可以包括里面的所有东西,而不仅仅是 Spinner 之外的东西。

喜欢

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" />

谢谢!!

【问题讨论】:

    标签: android android-layout android-widget


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      相关资源
      最近更新 更多