2013-03-24 2 views

ответ

1

LinearLayout можно кликать, но не подлежит проверке.
Чтобы получить RTL вида тумблера я сделал следующее:

  1. Я создал девять-путь изображения нажаты, проверяется и состояние по умолчанию.

  2. Создано селектор:

<item android:drawable="@drawable/button1_on" android:state_pressed="true"/> 
<item android:drawable="@drawable/button1_selected" android:state_checked="true"/> 
<item android:drawable="@drawable/button1_off"/> 

3.Created класс, который расширяет Button и Implements Checkable:

public class MyCheckbox extends Button implements Checkable { 

private static final int[] CHECKED_STATE_SET = {android.R.attr.state_checked}; 
private boolean mIsChecked = false; 

public MyCheckbox(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
} 

public MyCheckbox(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public MyCheckbox(Context context) { 
    super(context); 
} 

@Override 
public boolean isChecked() { 
    return mIsChecked; 
} 

@Override 
public void setChecked(boolean isChecked) { 
    mIsChecked = isChecked; 
} 

@Override 
public void toggle() { 
    setChecked(!mIsChecked); 
} 

@Override 
public boolean performClick() { 
    toggle(); 
    return super.performClick(); 
} 

@Override 
protected int[] onCreateDrawableState(int extraSpace) { 
    final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); 
    if (isChecked()) { 
     mergeDrawableStates(drawableState, CHECKED_STATE_SET); 
    } 
    return drawableState; 
} 

} 

Таким же образом я t может быть реализована на интерактивном LinearLayout

1

Флажки и другие представления должны быть напрямую заменены при использовании локальных rtl. Если вы хотите, чтобы вы соответствовали языкам RTL, используйте новые параметры «start» & «end», включенные в JellyBean (marginStart & marginEnd вместо marginLeft/Right & marginRight/Left). Хотя, если вам нужно это поведение для предыдущих версий, вам могут потребоваться другие трюки. Обратите внимание, что TextView уже переместится полностью на другую сторону поля: убедитесь, что в этом случае вы не используете много WRAP_CONTENT, это может привести к несоосности.

+0

Мне нужно поддерживать более низкие версии, а фон содержит изображение (девять патчей) с правой стороны, а текст должен быть слева. – NickF

+0

В моем подходе будет использоваться TextView и программно программируется в отношении языка. textView.setCompoundDrawables (rtlLanguage? null: drawable, null, rtlLanguage? drawable: null, null); –

Смежные вопросы