自定义布局的微调项目

在警报对话框中有一个微调。 我想减less微调项目之间的填充,因此我执行以下内容:

spinner_row.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="30dp" android:background="#fff" > <TextView android:id="@+id/tvCust" android:layout_width="200dp" android:layout_height="30dp" android:gravity="left|center_vertical" android:textColor="#000" android:textSize="15sp" /> <RadioButton android:layout_width="wrap_content" android:layout_height="30dp" android:layout_alignParentRight="true" /> </RelativeLayout> 

活动代码包含以下内容

 spinner= (Spinner) dialog.findViewById(R.id.spinner); String arr[] = { "1", "2", "3" }; ArrayAdapter<String> adapter = new ArrayAdapter<String>( CameraActivity.this, R.layout.spinner_row, R.id.tvCust,arr); spinner.setAdapter(adapter); 

现在,您可以在下面的屏幕截图中看到单选button显示在spinner上,这实际上是spinner_row.xml的一部分。 请注意,textview的宽度是200dp,而微调只有130dp长,所以单选button不应该显示在微调器上。 我怎样才能删除它?

此外,当我单击任何一个微调项目,微调popup不会按预期消失(注意微调项目列表中检查所有3个checkbox)。 setOnItemSelectedListener没有被调用的项目点击。

任何帮助赞赏。

截图

编辑1

按照Farrukh的build议,我尝试了他的代码,结果如下。

截图

Solutions Collecting From Web of "自定义布局的微调项目"

我有这个

在这里输入图像说明

和这个

在这里输入图像说明

与这些代码的XML

用于名为spinadapt.xml的适配器的xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="30dp" android:background="#fff" > <TextView android:id="@+id/tvCust" android:layout_width="wrap_content" android:layout_height="30dp" android:layout_toLeftOf="@+id/radioButton1" android:gravity="left|center_vertical" android:textColor="#000" android:textSize="15sp" /> <RadioButton android:layout_width="wrap_content" android:layout_height="30dp" android:layout_alignParentRight="true" /> </RelativeLayout> 

和名为activity_main.xml的主布局

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:hint="Select item" android:background="@drawable/spin"/> </RelativeLayout> 

而java代码是名为MainActivity.java的类

 public class MainActivity extends Activity { Spinner sp; TextView tv; String[] counting={"One","Two","Three","Four"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sp=new Spinner(this); tv=(TextView)findViewById(R.id.spinner1); tv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { sp.performClick(); } }); sp.setAdapter(new Adapter(MainActivity.this, counting)); sp.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { tv.setText(counting[arg2]); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); } } 

和名为Adapter.java的适配器类

 public class Adapter extends BaseAdapter { LayoutInflater inflator; String[] mCounting; public Adapter( Context context ,String[] counting) { inflator = LayoutInflater.from(context); mCounting=counting; } @Override public int getCount() { return mCounting.length; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = inflator.inflate(R.layout.spinadapt, null); TextView tv = (TextView) convertView.findViewById(R.id.tvCust); tv.setText(Integer.toString(position)); return convertView; } } 

这是工作完美

希望这会有所帮助