【问题标题】:Scrolling dynamically between Relative layouts in a scrollView在滚动视图中的相对布局之间动态滚动
【发布时间】:2014-01-08 12:27:33
【问题描述】:

我有一个滚动视图,其中有几个相对布局。并且相对布局有两个动态添加到它的按钮。如下

滚动视图

  _____________________
 |   ________________  |
 |  |Relative Layout|  |
 |  |   |Buttons|   |  |
 |  |_______________|               
 |                     |
 |   ________________  |
 |  |Relative Layout|  |
 |  |   |Buttons|   |  |
 |  |_______________|                 
 |                     |
 |  |Relative Layout|  |
 |  |   |Buttons|   |  |
 |  |_______________|               
 |                     |
 |   ________________  |
 |  |Relative Layout|  |
 |  |   |Buttons|   |  |
 |  |_______________|                  
 |                     |
 |  |Relative Layout|  |
 |  |   |Buttons|   |  |
 |                     |
 |_____________________|

是否可以在单击按钮时动态滚动到特定的相对布局。 我已经在下面尝试过,但它不起作用

if (count == 1) {
    final int k = id;
mScrollView.getViewTreeObserver().addOnGlobalLayoutListener(
        new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
                public void onGlobalLayout() {
            // TODO Auto-generated
        // method stub
        mScrollView.post(new Runnable() {
                @Override
            public void run() {
            Button btn = (Button) findViewById(k);
            mScrollView.smoothScrollTo(0,btn.getTop());
                }
        });

滚动到也不起作用

编辑: 最初我在相对布局中只有一组按钮。然后smoothScrollTo 按预期工作。后来我把结构改成了上面的样式。

【问题讨论】:

  • 欢迎使用stackoverflow,下次请添加格式良好的代码。
  • 你有这个布局的 XML 布局吗?你也可以发这个吗?
  • 我在 xml 中创建滚动视图如下 在上面我动态添加相对布局
  • 通过编辑您的帖子而不是添加评论来添加代码。除此之外,btn.getTop(),这不会给你留下与其父级的相对位置吗?所以我假设你想要它的父级的位置,即周围的 Relativelayout

标签: android android-layout android-scrollview


【解决方案1】:

@Daniel Bo 的提示是正确的。

view.getTop() 将给出相对于其直接父级的位置。

下面是实现。

ScrollView mScrollView = (ScrollView) findViewById(R.id.scroll_view);
mScrollView.post(new Runnable() {
    public void run() { 
        Button btn = (Button) findViewById(k); 
        ViewGroup vg =(ViewGroup)btn.getParent();
        mScrollView.smoothScrollTo(0,vg.getTop());
     }});
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多