代码之家  ›  专栏  ›  技术社区  ›  cambraca

直接在布局xml中填充微调器

  •  220
  • cambraca  · 技术社区  · 14 年前

    是否可以在布局xml中填充微调器的选项? This page 建议我使用ArrayaAdapter?做不到似乎很尴尬。。

    3 回复  |  直到 14 年前
        1
  •  567
  •   PGSystemTester    7 年前

    我不确定,但试试看。

    在strings.xml中定义:

    <string-array name="array_name">
    <item>Array Item One</item>
    <item>Array Item Two</item>
    <item>Array Item Three</item>
    </string-array>
    

    <Spinner 
            android:id="@+id/spinner"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:drawSelectorOnTop="true"
            android:entries="@array/array_name"
        />
    

    我听说这不一定适用于设计师,但它编译得很好。

        2
  •  23
  •   Gary Yuseferi    6 年前

    在String.xml文件中定义它,并将数组命名为所需的名称,例如“Weight”

    <string-array name="Weight">
    <item>Kg</item>
    <item>Gram</item>
    <item>Tons</item>
    </string-array>
    

    <Spinner 
            android:id="@+id/fromspin"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:entries="@array/Weight"
     />
    

    在java文件中, getActivity 在片段中使用;如果在活动中编写该代码,则删除 .

    a = (Spinner) findViewById(R.id.fromspin);
    
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this.getActivity(),
                    R.array.weight, android.R.layout.simple_spinner_item);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    
            a.setAdapter(adapter);
            a.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
                    if (a.getSelectedItem().toString().trim().equals("Kilogram")) {
                        if (!b.getText().toString().isEmpty()) {
                            float value1 = Float.parseFloat(b.getText().toString());
                            float kg = value1;
                            c.setText(Float.toString(kg));
                            float gram = value1 * 1000;
                            d.setText(Float.toString(gram));
                            float carat = value1 * 5000;
                            e.setText(Float.toString(carat));
                            float ton = value1 / 908;
                            f.setText(Float.toString(ton));
                        }
    
                    }
    
    
    
                public void onNothingSelected(AdapterView<?> parent) {
                    // Another interface callback
                }
            });
            // Inflate the layout for this fragment
            return v;
        }
    
        3
  •  -2
  •   CPUSCIMAJOR    7 年前

    关于第一条评论:如果你这样做,你会得到一个错误(在Android Studio中)。这是因为它不在Android名称空间中。如果您不知道如何修复此错误,请查看下面的示例。希望这有帮助!

    示例-之前:

    <string-array name="roomSize">
        <item>Small(0-4)</item>
        <item>Medium(4-8)</item>
        <item>Large(9+)</item>
    </string-array>
    

    <string-array android:name="roomSize">
        <item>Small(0-4)</item>
        <item>Medium(4-8)</item>
        <item>Large(9+)</item>
    </string-array>