【问题标题】:RadioButton: Text before the button [closed]RadioButton:按钮前的文本[关闭]
【发布时间】:2013-12-31 19:24:38
【问题描述】:

请看下面的代码

 <RadioButton android:id="@+id/radio_pirates"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/pirates"
        android:onClick="onRadioButtonClicked"/>

这些单选按钮的文本位于按钮之后。但我需要在按钮之前显示文本。我怎样才能做到这一点?请帮忙。

【问题讨论】:

  • 在询问之前您有没有尝试/研究过任何东西?

标签: java android eclipse user-interface radio-button


【解决方案1】:

您可以通过设置android:button="@null" 并将RadioButtondrawable 添加为android:drawableRight 来实现此目的。您可以使用 android:drawablePadding 更改文本和 drawable 之间的填充。

    <RadioButton
        android:id="@+id/second"
        android:button="@null"
        android:drawableRight="@android:drawable/btn_radio"
        android:drawablePadding="20dp"
        android:layout_width="200dip"
        android:layout_height="wrap_content"
        android:text="@string/second"
        android:textSize="20dip" />
</RadioGroup>

【讨论】:

    【解决方案2】:

    试试这个..

    <RadioButton
        android:id="@+id/radio0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:button="@null"
        android:checked="true"
        android:drawableRight="@android:drawable/btn_radio"
        android:text="RadioButton" />
    

    【讨论】:

      【解决方案3】:

      你可以这样做

      <RadioButton
           android:id="@+id/radio_pirates"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:button="@null"
           android:drawableRight="@drawable/custom_radio_button"
           android:drawablePadding="5dp"
           android:text="@string/pirates" />
      

      【讨论】:

        【解决方案4】:
          <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">     
        
            <TextView
                android:id="@+id/txt_radio_pirates"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:text="@string/pirates" />
        
            <RadioButton
                android:id="@+id/radio_pirates"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:button="@null"
                android:drawableRight="@drawable/custom_radio_button"
                android:layout_alignLeft="@+id/txt_radio_pirates"
                android:layout_marginLeft="80dp"
                android:layout_centerVertical="true"/>
        </RelativeLayout>
        

        试试这个方法

        【讨论】:

          【解决方案5】:

          为此,最好使用 textview 来显示文本。但是您需要为其定制适配器。请检查该适配器的以下代码作为参考。

          class CustomAdapter extends ArrayAdapter<ContactPerson>{
                  private ArrayList<ContactPerson> contactList;
          
                  public CustomAdapter(Context context, int textViewResourceId,
                          ArrayList<ContactPerson> contactList) {
                      super(context, textViewResourceId, contactList);
                      // TODO Auto-generated constructor stub
                      this.contactList = new ArrayList<ContactPerson>();
                      this.contactList.addAll(contactList);
                  }
          
                  private class ViewHolder{
                      TextView ContactName;
                      CheckBox contactCheck;
                  }
          
                  @Override
                  public View getView(int position, View convertView, ViewGroup parent) {
                      // TODO Auto-generated method stub
          
                      ViewHolder holder = null;
                      Log.v("Convert View", String.valueOf(position));
          
                      if(convertView==null){
                          LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          
                          convertView = inflater.inflate(R.layout.checkbox_item, null);
          
                          holder = new ViewHolder();
                          holder.ContactName = (TextView) convertView.findViewById(R.id.contact_name);
                          holder.contactCheck = (CheckBox) convertView.findViewById(R.id.contact_check);
          
                          convertView.setTag(holder);
          
                          holder.contactCheck.setOnClickListener(new View.OnClickListener() {
          
                              @Override
                              public void onClick(View v) {
                                  // TODO Auto-generated method stub
                                  CheckBox cb = (CheckBox) v;
                                  ContactPerson contact = (ContactPerson) cb.getTag();
          //                      Log.i("clicked users", contact.getName());
          
                                  contact.setSelected(cb.isChecked());
                              }
                          });
                      }
                      else{
                          holder = (ViewHolder) convertView.getTag();
                      }
          
                      ContactPerson contacts = contactList.get(position);
                      holder.ContactName.setText("("+contacts.getName()+")");
                      holder.contactCheck.setChecked(contacts.isSelected());
                      holder.contactCheck.setTag(contacts);
                      holder.ContactName.setText(contacts.getName());
                      return convertView;
                  }
              }
          

          此代码用于 Dinithe d 提到的布局。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-09-14
            • 2013-12-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多