Scrolling in Horizontal ScrollView losing selection
I'm not familiar with Android, so just some generic notes:


int i = 0;
Button button = null;
for (; i &lt; 11; i++)


I think the most developers more familiar with the following (equal and shorter) form:

for (int i = 0; i &lt; 11; i++)

11 and 0 are magic numbers. Use a named constant instead of them which explains the meaning of these numbers (and probably removes some duplication and makes maintenance easier).
I think MotionEvent variable could deserve a little bit longer name for better readability. (Clean Code by Robert C. Martin, Avoid Mental Mapping, p25)
You could increase the abstraction level and readability a little bit with a new method whose name contains the purpose of the loop:

@Override
public boolean onTouchEvent(MotionEvent event) {
    Button button = getSelectedButton();
    super.onTouchEvent(event);
    button.setSelected(true);
    button.requestFocusFromTouch();

    return true;
}

private Button getSelectedButton() {
    LinearLayout linearLayout = (LinearLayout) getChildAt(0);
    for (int i = 0; i &lt; 11; i++) {
        Button button = (Button) linearLayout.getChildAt(i);
        if (button.isSelected()) {
            return button;
        }
    }
    throw new IllegalStateException("no button selected");
}


Note that the Button variable get a smaller scope and the linearLayout local variable. 

(Clean Code by Robert C. Martin, One Level of Abstraction per Function, p36; Clean Code by Robert C. Martin, G19: Use Explanatory Variables, p296; Effective Java, Second Edition, Item 45: Minimize the scope of local variables; Refactoring: Improving the Design of Existing Code by Martin Fowler, Introduce Explaining Variable)
If you return null the button.setSelected() will throw a NullPointerException (or if you don't find any selected button in the original code). I guess having zero selected button is not a valid state of the application. If it somehow happens I'd throw an exception immediately (instead of setting null as the Button reference).

private Button getSelectedButton() {
    for (int i = 0; i &lt; 11; i++) {
        Button button = (Button) ((LinearLayout) getChildAt(0)).getChildAt(i);
        if (button.isSelected())
            return button;
    }
    throw new IllegalStateException("no button selected");
}


(The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas: Dead Programs Tell No Lies.)
super.onTouchEvent(event);
button.setSelected(true);


Are you sure that you need setSelected(true) here? It seems that it's already selected before the super call (the for loop returns a selected button) but super.onTouchEvent() might unselect it. If super doesn't change this state you could remove the button.setSelected call.