ali*_*ali 6 android scroll position button 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
Run Code Online (Sandbox Code Playgroud)
我想要的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());
}
}
Run Code Online (Sandbox Code Playgroud)
所以,正如我所说,我无法获得按钮的左侧位置,也可以滚动到我的某个X位置HorizontalScrollView.这可能吗?
Luk*_*rog 14
(总是0)
请记住,视图在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);
}
});
Run Code Online (Sandbox Code Playgroud)
另外要小心你在布局中使用的属性(我指的是layout_gravity如果我没有弄错的话会导致问题).
| 归档时间: |
|
| 查看次数: |
12995 次 |
| 最近记录: |