5

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

在此处输入图像描述

我正在使用 android.widget.spinner。但是复选框不太明显。

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

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

4

5 回答 5

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>
于 2013-01-04T07:30:25.893 回答
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" />

试试这个。希望它会帮助你。

于 2013-01-04T09:30:42.563 回答
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"/>

whereunselected_option是在checkbox未选中时显示selected_option的图像,是在选中选项时显示checkbox背景的图像。

于 2012-12-21T09:09:43.763 回答
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;
            }
        }
于 2012-12-21T10:30:02.730 回答
0

为自己创建一个可绘制对象:

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/

然后您必须创建四个可绘制对象,这些将是 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>

然后将其设置为每一行的布局并自己处理复选框选择......这就是定制的代价。

于 2012-12-28T16:36:34.677 回答