如何更改微调器复选框的大小或颜色?

时间:2012-12-21 08:59:15

标签: android android-spinner

我正在开发一个Android项目,允许用户在警报对话框中选择一个项目列表(参见下图)。

enter image description here

我正在使用android.widget.spinner。但是复选框并不清晰。

我正在尝试个性化复选框,因为默认情况下这种类型。

那么可以用我自己的复选框替换它们吗?

5 个答案:

答案 0 :(得分:1)

在布局文件中尝试这种方式。

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearlayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/border" <--- android built-in style. You can define your own whichever you like. Check for it.
android:orientation="horizontal" >
<CheckBox
    android:id="@+id/check"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="2dp" />
<TextView
    android:id="@+id/Textname"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="7dp"
    android:textColor="#FAFAFA"
    android:textSize="14dp"
    android:textStyle="bold" />
</LinearLayout>

答案 1 :(得分:1)

我不确定这会对你有所帮助,但我在我的一个项目中做了自定义微调器,我必须设置自定义背景和字体大小。我有如下代码。

你可以尝试一下。在string.xml内写道:

   <string-array name="spinner_array_environtment">
        <item>Test</item>
        <item>Production</item>
    </string-array>

在MainActivity.java中:

public class MainActivity extends Activity {
Spinner spinner_environment;

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

                spinner_environment = (Spinner) findViewById(R.id.spinnerview);
adapter =ArrayAdapter.createFromResource(this,              R.array.spinner_array_environtment,R.layout.spinner_phone);
            adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
            spinner_environment.setAdapter(adapter);
}

内部spinner_phone.xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/spinnerTarget"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="13dp"
    android:textColor="#4C4646" />

试一试。希望它会对你有所帮助。

答案 2 :(得分:0)

您想要更改checkbox权限的背景吗?然后按以下步骤操作:

 checkBox.setButtonDrawable(<YourClass>.getResources().getDrawable( R.drawable.checkradio));   // where check radio is an xml file as shown below:

 <?xml version="1.0" encoding="utf-8"?>
    <item android:drawable="@drawable/unselected_option" android:state_checked="false"/>
    <item android:drawable="@drawable/selected_option" android:state_checked="true"/>

其中unselected_option是用于在未选中checkbox时显示的图片,selected_option是用于在选中选项时显示checkbox背景的图片。

答案 3 :(得分:0)

你要做的就是创建一个自定义微调器......

你必须制作一个包含textview和复选框的xml文件(根据你所需的大小)

之后你必须将新的xml充气到微调器上。

扩充自定义视图的代码:这只是一个示例

public View getCustomView(int position, View convertView, ViewGroup parent) {

            LayoutInflater inflater=getLayoutInflater();
            View row=inflater.inflate(R.layout.row, parent, false);
            TextView label=(TextView)row.findViewById(R.id.company);
            label.setText(strings[position]);

            TextView sub=(TextView)row.findViewById(R.id.sub);
            sub.setText(subs[position]);

            ImageView icon=(ImageView)row.findViewById(R.id.image);
            icon.setImageResource(arr_images[position]);

            return row;
            }
        }

答案 4 :(得分:0)

创建一个drawable:

my_checkbox.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/my_checkbox_pressed" android:state_selected="true"/>
    <item android:drawable="@drawable/my_checkbox_focused" android:state_focused="true"/>
    <item android:drawable="@drawable/my_checkbox_pressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/my_checkbox_default"/> <!-- pressed -->

</selector>

这是/drawable/

然后你必须创建四个drawable,这些是png文件,你需要为每个屏幕大小创建一个,即/drawable-mdpi

您可以从Android源代码中获取这些内容,只需更轻松地修改它们即可。 (例如,查看此处http://androiddrawableexplorer.appspot.com/并搜索复选框)

然后只使用此作为行项目布局的复选框

<CheckBox
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:button="@drawable/my_checkbox"
/>

simple_spinner_item看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@android:id/text1"
        style="?android:attr/spinnerItemStyle"
   android:singleLine="true"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:ellipsize="marquee" />

您所要做的就是创建自己的布局文件:

my_simple_spinner item.xml将其放入drawable并添加自定义复选框:

<LinearLayout />
  <TextView />
  <CheckBox android:button="@drawable/my_checkbox" />
</LinearLayout>

然后将其设置为每行的布局并自行处理复选框选择......这是自定义的价格。