【问题标题】:Position a particular view定位特定视图
【发布时间】:2016-02-04 17:12:03
【问题描述】:

我正在使用 frameLayout 并将其添加到已经包含列表视图的视图组中。现在出现的问题是框架视图被固定在底部。我希望它降到底部。

这是我的代码:

public void addToView(ViewGroup view){
    view.addOnLayoutChangeListener(layoutChangeListener);

     frameParams = new FrameLayout.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT
    );


    removeAllViews();
    View v = makeControllerView();
    view.addView(v, frameParams);
}

【问题讨论】:

  • 抱歉,这令人困惑,至少对我而言。您的意思是它位于底部,但您只想在滚动到列表底部时看到它?
  • 否,默认情况下框架布局位于顶部。但我希望它保持在底部。
  • 这可以通过将重力或规则与 RelativeLayout 父容器一起使用来完成。
  • 怎么做。我使用的是框架布局而不是相对布局。请详细说明。
  • 您能否发布您正在尝试使用的 xml 文件,以便我可以帮助修改它以满足您的需求?

标签: android view android-framelayout viewgroup


【解决方案1】:

你需要这样的东西

<RelativeLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView (or android.support.v7.widget.RecyclerView)
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

然后添加视图做类似的事情

RelativeLayout container = (RelativeLayout) findViewById(R.id.container);

int vId = 1234;
View v = makeControllerView();
v.setId(vId);
RelativeLayout.LayoutParams vParams = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
vParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
container.addView(v, vParams);

RelativeLayout.LayoutParams lvParams = 
        (RelativeLayout.LayoutParams) container.getLayoutParams();
lvParams.addRule(RelativeLayout.ABOVE, vId);
ListView lv = (ListView) findViewById(R.id.listview);
lv.setLayoutParams(lvParams);

我没有对此进行测试,也不知道它是否有效,但这只是为了让您了解如何处理它。 我不会这样处理,如果我知道在这种情况下可能会添加视图,我只会将视图添加到 xml 的布局中并处理它的可见性。这是你问的。

【讨论】:

  • 好的,所以你的建议是玩能见度。而不是添加视图。
  • 是的,您可以看到动态添加视图,特别是当您对它们在布局中的位置感兴趣时,如果其中有动态大小的视图(如列表)更是如此,该过程可能会变得不堪重负与if(shouldShow) view.setVisibility(View.VISIBLE); 之类的东西相比
  • 但是当有 7 个活动时我会怎么做。我想让它模块化。这就是为什么。
  • @RahulVerma 这7个活动有什么区别?如果它们都具有您要添加的不同视图,我将使用单独的布局来处理它,如果只有微小的差异(有些显示一些没有的视图),那么您可以使用可见性来处理它,如果它们都相似但包含主要区别,例如不同的页脚视图,那么您可以创建一个抽象父类活动,该活动具有像 protected abstract View getFooterView(); 这样的抽象方法,为每个活动子类化它,覆盖该方法,并使用适当的视图进行回复。
  • 不知道。将尝试并稍后联系您。
猜你喜欢
  • 2016-02-20
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多