Найдите дочернее местоположение в HorizontalScrollView и выделите его

Похоже, я не могу получить или установить любую позицию или количество прокрутки в моем простом расположении:

// Relative layout - main_layout <HorizontalScrollView android:id="@+id/MenuScroll" android:layout_width="fill_parent" android:layout_height="wrap_content" android:fillViewport="true" android:scrollbars="none" > <LinearLayout android:layout_width="wrap_content" android:layout_height="48dp" android:orientation="horizontal" android:layout_gravity="center" android:padding="0dp" > <Button android:id="@+id/button1" android:layout_width="150dp" android:layout_height="fill_parent" /> <Button android:id="@+id/button2" android:layout_width="150dp" android:layout_height="fill_parent" /> <Button android:id="@+id/button3" android:layout_width="150dp" android:layout_height="fill_parent" /> <Button android:id="@+id/button4" android:layout_width="150dp" android:layout_height="fill_parent" /> <Button android:id="@+id/button5" android:layout_width="150dp" android:layout_height="fill_parent" /> </LinearLayout> </HorizontalScrollView> // End of RelativeLayout - main_layout 

В моем MainActivity я хочу получить положение любой кнопки внутри HorizontalScrollView и прокрутить до этой позиции. На данный момент я не могу получить левое значение (это всегда 0), и если я попытаюсь scrollTo к HorizontalScrollView это просто не произойдет, независимо от того, что значение для x или y.

 // imports public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); final Button button3 = (Button)findViewById(R.id.button3); Rect rectf = new Rect(); button3.getLocalVisibleRect(rectf); Log.i("Left: ", String.valueOf(rectf.left)); // it is always 0 HorizontalScrollView MenuScroll = (HorizontalScrollView)findViewById(R.id.MenuScroll); // Trying to scroll to X=100 but it doesn't MenuScroll.scrollTo(100, MenuScroll.getBottom()); } } 

Итак, как я уже сказал, я не могу получить левую позицию для своей кнопки, и вы можете прокрутить до некоторой позиции X в моем HorizontalScrollView . Это возможно?

(Всегда 0)

Имейте в виду, что представления не имеют измерений в методе onCreate поскольку они помещаются на экран после onCreate обратного вызова onCreate .

В моем MainActivity я хочу получить положение любой кнопки внутри HorizontalScrollView и прокрутить до этой позиции.

Посмотрите на код ниже (помещенный в метод onCreate ):

  final HorizontalScrollView MenuScroll = (HorizontalScrollView) findViewById(R.id.MenuScroll); MenuScroll.post(new Runnable() { @Override public void run() { final Button button3 = (Button) findViewById(R.id.button3); int scrollTo = 0; final int count = ((LinearLayout) MenuScroll.getChildAt(0)) .getChildCount(); for (int i = 0; i < count; i++) { final View child = ((LinearLayout) MenuScroll.getChildAt(0)) .getChildAt(i); if (child != button3) { scrollTo += child.getWidth(); } else { break; } } MenuScroll.scrollTo(scrollTo, 0); } }); 

Также будьте осторожны с атрибутами, которые вы используете в макете (я имею в виду layout_gravity которые могут вызвать проблемы, если я не ошибаюсь).

Это можно сделать так:

 scrollTo = button3.getLeft();