Найдите дочернее местоположение в 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(); 
Intereting Posts
Как проверяются разрешения безопасности Android во время выполнения? Android GCM «error»: «NotRegistered» Как показать адресную строку снова после выхода из полноэкранного режима на Android Можно ли динамически указывать имя пакета во время сборки? Добавление текстового подсказки в Android SwipeRefreshLayout Проведите по одному пункту за раз. Recycliewiew Файл AndroidManifest.xml не найден Ошибка WifiStateMachine Сделать два текстовых вида в относительной компоновке занимают 50% высоты Учебник / ссылка на запуск ACTION_EDIT с изображением и обратным изображением Как создать коллекцию из res / values ​​/ arrays.xml? LinkedList, помещенный в Intent extra, перерабатывается в ArrayList при извлечении в следующем действии Как установить пользовательский минимальный и максимальный день выбора даты в «wdullaer materialdatetimepicker», Как опубликовать файл split apk в Google Play Store Android: Как заполнить цвет только для определенной части изображения?