Wygląda na to, że nie można pobrać lub ustawić dowolną pozycję lub ilości przewijania w moim prosty układ:Get lokalizację dziecka w HorizontalScrollView i wskaż go
// 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
Co chcę w moim MainActivity
jest, aby uzyskać pozycję dowolny przycisk wewnątrz HorizontalScrollView
i przewiń do tej pozycji. W tej chwili nie mogę uzyskać lewej wartości (zawsze jest 0) i jeśli spróbuję wykonać scrollTo
, to po prostu nie, niezależnie od tego, jaka jest wartość x lub 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());
}
}
Tak, jak powiedziałem, nie mogę dostać lewą pozycję dla mojego przycisku, a każdy z nich może przejść do jakiejś pozycji X w moim HorizontalScrollView
. czy to możliwe?
Nie trzeba iteracyjne nad wszystkie poglądy dzieci i sumując ich szerokości, aby uzyskać wartość przewijania. Po prostu ustaw 'scrollTo = button3.getLeft()' – camelCaseCoder