微调器项目不可点击

时间:2016-10-12 19:54:41

标签: android spinner

我有一个微调器,我填充了4个元素。在启动期间,onItemSelected方法正确执行并显示toast消息。但是,当我打开微调器并尝试单击任何项​​目时,不会调用任何事件,除非我按下微调器箭头,否则微调器弹出窗口不会关闭。换句话说,我无法与微调器项目进行交互。

以下是微调器的活动代码

 <Spinner
        android:id="@+id/spinner"
        android:popupBackground="@color/red"
        android:clickable="true"
        style="@style/spinner250"/>

以下是微调器的样式

    <style name="spinner250">
    <item name="android:layout_width"> 250dp </item>
    <item name="android:layout_height"> match_parent </item>
    <item name="android:textColor"> @color/blue </item>
    <item name="android:textSize"> 12sp </item>
    </style>

这是我用于与微调器交互的java代码     包com.example.android.gjobat;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
import org.w3c.dom.Text;
import static android.R.attr.country;
import static android.widget.ArrayAdapter.createFromResource;

public class MainActivity extends AppCompatActivity implements     OnItemSelectedListener {

public Spinner spinner;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final String[] items = {"Item 1", "Item 2", "Item 3", "Item 4"};

    // Create an ArrayAdapter using the string array and a default spinner layout
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, items);
    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(this);

}

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
    {
        String item = parent.getItemAtPosition(position).toString();
        // User selected item
        Toast.makeText(getApplicationContext(), item + " selected!", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent)
    {

    }
}

4 个答案:

答案 0 :(得分:3)

在花了一整天后,我发现问题是由

引起的
 <item name="android:inputType">textCapCharacters</item>

在我的styles.xml文件中。我不知道为什么这行代码导致了错误,但至少它在我删除该行后现在正常工作。在删除有缺陷的行

之前,我的styles.xml文件的完整副本下面
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColor">@color/white</item>
<item name="android:inputType">textCapCharacters</item>
<item name="colorControlActivated">@color/white</item>
<item name="colorControlHighlight">@color/white</item>
<item name="colorControlNormal">@color/white</item>
</style>

我希望这有助于将来的某个人

答案 1 :(得分:0)

您可以使用onItemClickListener,如下所示

spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

Toast.makeText(getApplicationContext(), "Item number: " + position, Toast.LENGTH_LONG).show();

}

});

答案 2 :(得分:0)

尝试从select year(mydate),month(mydate), sum(IF(source = 'fb',1,0)) fb_count, sum(IF(source = 'yelp',1,0)) yelp_count from (select t.*, row_number() over(partition by user_id order by timestamp) rn from tablename t) x where rn = 1 --add a date filter if necessary group by year(mydate),month(mydate) 窗口小部件中删除xml属性android:clickable="true"。可能是整个微调器正在注册click事件而不是单个微调器项。

Spinner functionality issues in Android 6.0 Marshmallow

可能重复

答案 3 :(得分:0)

有时候这个问题可能还因为您将旋转器放置在您正在拨打的版面之外。这将不会显示任何错误,但您将无法与“旋转视图”进行交互