Estoy mostrando la lista de aguijones en formato de vista de lista, utilicé la vista de lista predeterminada y coloqué un botón de opción usando simple_list_item_single_choice
. Pero esto muestra el botón de Radio en el lado derecho, quiero mostrar el botón de radio en el lado izquierdo. es que es posible mostrar el botón de opción en el lado izquierdo usando la vista de lista predeterminadaBotón de radio en la vista de lista
Respuesta
simple_list_item_single_choice.xml
uso CheckedTextView
clase
Aquí está el simple_list_item_single_choice.xml
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:paddingLeft="6dip"
android:paddingRight="6dip"
/>
lo necesario para crear un XML personalizado a sus necesidades, y utilizar un CheckBox
para lograr su objetivo Aquí está su custom.xml
<CheckBox
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:button="?android:attr/listChoiceIndicatorSingle"
android:paddingLeft="6dip"
android:paddingRight="6dip"
/>
Simplemente use custom.xml
en lugar de simple_list_item_single_choice.xml
en su código.
Espero que te ayude.
No es posible, de forma predeterminada, el botón de opción está a la derecha. Si lo desea a la izquierda, debe obtener las fuentes para el diseño simple_list_item_single_choice.xml del SDK y realizar los cambios apropiados, luego use este diseño personalizado en lugar del predeterminado.
simple_list_item_single_choice use la clase CheckedTextView.
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:paddingLeft="6dip"
android:paddingRight="6dip"
/>
CheckedTextView class es el paquete android.widget.
Esta fuente de clase a continuación.
/*
* Copyright (C) 2007 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.widget;
import com.android.internal.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.ViewDebug;
import android.view.accessibility.AccessibilityEvent;
/**
* An extension to TextView that supports the {@link android.widget.Checkable} interface.
* This is useful when used in a {@link android.widget.ListView ListView} where the it's
* {@link android.widget.ListView#setChoiceMode(int) setChoiceMode} has been set to
* something other than {@link android.widget.ListView#CHOICE_MODE_NONE CHOICE_MODE_NONE}.
*
*/
public class CheckedTextView extends TextView implements Checkable {
private boolean mChecked;
private int mCheckMarkResource;
private Drawable mCheckMarkDrawable;
private int mBasePaddingRight;
private int mCheckMarkWidth;
private static final int[] CHECKED_STATE_SET = {
R.attr.state_checked
};
public CheckedTextView(Context context) {
this(context, null);
}
public CheckedTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CheckedTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.CheckedTextView, defStyle, 0);
Drawable d = a.getDrawable(R.styleable.CheckedTextView_checkMark);
if (d != null) {
setCheckMarkDrawable(d);
}
boolean checked = a.getBoolean(R.styleable.CheckedTextView_checked, false);
setChecked(checked);
a.recycle();
}
public void toggle() {
setChecked(!mChecked);
}
@ViewDebug.ExportedProperty
public boolean isChecked() {
return mChecked;
}
/**
* <p>Changes the checked state of this text view.</p>
*
* @param checked true to check the text, false to uncheck it
*/
public void setChecked(boolean checked) {
if (mChecked != checked) {
mChecked = checked;
refreshDrawableState();
}
}
/**
* Set the checkmark to a given Drawable, identified by its resourece id. This will be drawn
* when {@link #isChecked()} is true.
*
* @param resid The Drawable to use for the checkmark.
*/
public void setCheckMarkDrawable(int resid) {
if (resid != 0 && resid == mCheckMarkResource) {
return;
}
mCheckMarkResource = resid;
Drawable d = null;
if (mCheckMarkResource != 0) {
d = getResources().getDrawable(mCheckMarkResource);
}
setCheckMarkDrawable(d);
}
/**
* Set the checkmark to a given Drawable. This will be drawn when {@link #isChecked()} is true.
*
* @param d The Drawable to use for the checkmark.
*/
public void setCheckMarkDrawable(Drawable d) {
if (mCheckMarkDrawable != null) {
mCheckMarkDrawable.setCallback(null);
unscheduleDrawable(mCheckMarkDrawable);
}
if (d != null) {
d.setCallback(this);
d.setVisible(getVisibility() == VISIBLE, false);
d.setState(CHECKED_STATE_SET);
setMinHeight(d.getIntrinsicHeight());
mCheckMarkWidth = d.getIntrinsicWidth();
mPaddingRight = mCheckMarkWidth + mBasePaddingRight;
d.setState(getDrawableState());
} else {
mPaddingRight = mBasePaddingRight;
}
mCheckMarkDrawable = d;
requestLayout();
}
@Override
public void setPadding(int left, int top, int right, int bottom) {
super.setPadding(left, top, right, bottom);
mBasePaddingRight = mPaddingRight;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
final Drawable checkMarkDrawable = mCheckMarkDrawable;
if (checkMarkDrawable != null) {
final int verticalGravity = getGravity() & Gravity.VERTICAL_GRAVITY_MASK;
final int height = checkMarkDrawable.getIntrinsicHeight();
int y = 0;
switch (verticalGravity) {
case Gravity.BOTTOM:
y = getHeight() - height;
break;
case Gravity.CENTER_VERTICAL:
y = (getHeight() - height)/2;
break;
}
int right = getWidth();
checkMarkDrawable.setBounds(
right - mCheckMarkWidth - mBasePaddingRight,
y,
right - mBasePaddingRight,
y + height);
checkMarkDrawable.draw(canvas);
}
}
@Override
protected int[] onCreateDrawableState(int extraSpace) {
final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
if (isChecked()) {
mergeDrawableStates(drawableState, CHECKED_STATE_SET);
}
return drawableState;
}
@Override
protected void drawableStateChanged() {
super.drawableStateChanged();
if (mCheckMarkDrawable != null) {
int[] myDrawableState = getDrawableState();
// Set the state of the Drawable
mCheckMarkDrawable.setState(myDrawableState);
invalidate();
}
}
@Override
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
boolean populated = super.dispatchPopulateAccessibilityEvent(event);
if (!populated) {
event.setChecked(mChecked);
}
return populated;
}
}
Eres onDraw modificar. y simple_list_item_single_choice.xml modify.
ex.
<**your class(modifyed CheckedTextView)** xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:paddingLeft="6dip"
android:paddingRight="6dip"
/>
- 1. Obtener valor de botón de opción marcada en la lista botón de radio
- 2. MVC Razor Botón de radio
- 3. Estilo de botón de radio
- 4. WPF - Vista de lista con el botón
- 5. Jquery obtener seleccionado Botón de radio de la lista en la página cargar
- 6. Botón de radio marcado propiedad
- 7. Validación de botón de radio en javascript
- 8. Radio androide botón
- 9. Radio Control Dinámico Botón
- 10. jQuery .change() en el botón de radio
- 11. botón de radio simple_form_for rails en línea
- 12. Botón de radio de Firefox Weirdness
- 13. Imagen de fondo del botón de radio
- 14. Botón de radio en la aplicación para iPhone
- 15. Lista de botones de radio con Knockout.js
- 16. lista de botones de radio en control de repetidor
- 17. ¿La etiqueta del botón de radio también hace la selección?
- 18. Accesibilidad del botón de radio (cumplimiento 508)
- 19. Botón de radio con html.radiobutton ASP.NET MVC
- 20. ¿Cómo vincular ENUM al botón de radio?
- 21. Botón de AirPlay en la vista personalizada
- 22. Mejor implementación de botón de radio para IOS
- 23. JQuery: obtener el valor botón de radio
- 24. Botón de radio no alternar su estado
- 25. Evento para seleccionar el botón de radio?
- 26. Cambiar tamaño: Botón de radio Android
- 27. ser seleccionado el botón de radio no en una lista en ASP .NET
- 28. Android: Obtener el elemento de vista de lista desde el botón clic en vista de lista personalizada
- 29. iphone: el radio de la esquina del botón no establece
- 30. botón de validación grupo de radio dinámicos en jQuery
Gracias Tanmay, está funcionando, coloqué el botón de radio en el costado izquierdo, pero el problema al que me enfrenté es el botón de radio y el texto en la vista de lista ambos se fusionaron. Quiero separar tanto el botón de radio como las cuerdas en la vista de lista Es posible hacer esto..?? – RAAAAM
Opps ... !! Esto sucede debido a 'android: paddingLeft =" 6dip "' ..Sólo quítalo y por favor, avísame el resultado. –
Sí, hombre, eres genial. Acepto tu respuesta, está funcionando bien. Pero ahora, la lista de vista de oyente clic no funcionará ... ¿por qué sucedió esto? – RAAAAM