【问题标题】:Android: Check if view is aligned to parent bottom/top programmaticallyAndroid:检查视图是否以编程方式与父底部/顶部对齐
【发布时间】:2016-02-10 01:00:37
【问题描述】:

如何检查我的视图是否与其父底部(或顶部)对齐。

如果视图与父底部对齐,我想将其与父顶部对齐,反之亦然。我可以根据需要对齐视图,但我不知道如何先检查它。

我的 XML:

< RelativeLayout
    android:layout_width="20dp"
    android:layout_height="200dp">
        < Button 
            android:id="@+id/mybutton"     
            android:layout_height="25dp"       
            android:layout_alignParentBottom="true"
            android:layout_width="match_parent">
        < / Button>
< / RelativeLayout >

我的代码:

Button mybutton = (Button) findViewById(R.id.mybutton);
LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, 25);
params1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 0);
params1.addRule(RelativeLayout.ALIGN_PARENT_TOP);
button.setLayoutParams(params1);

我不能使用 getRule(),因为它只对 API23 及更高版本有效,而且我从 API16 开始使用。

对我可以做些什么来找到这个有什么帮助吗?谢谢。

【问题讨论】:

    标签: android layout layoutparams


    【解决方案1】:

    它很简单,您可以使用一个标志变量来实现这一点,如下所示:

        int isTopAligned=0;
        int isBottomAligned=0;
        Button mybutton = (Button) findViewById(R.id.mybutton);
        LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, 25);
        if(isTopAligned==0){
           params1.addRule(RelativeLayout.ALIGN_PARENT_TOP);
           params1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM,0);
           isTopAligned=1;
           isBottomAligned=0;
         }
         else{
           params1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
           params1.addRule(RelativeLayout.ALIGN_PARENT_TOP,0);
           isTopAligned=0;
           isBottomAligned=1;
         }
         button.setLayoutParams(params1);
    

    我认为不需要更多的阐述,因为代码很容易理解。

    注意:不需要 isBottomAligned 标志,因为检查 isTopAligned 就足够了。

    【讨论】:

    • 是的,我考虑过,但由于我在网格视图中使用此布局,因此会有多个实例。而且我宁愿不使用标志。但如果没有其他选择,我将不得不这样做。另外,我想知道是否有办法访问视图的此类布局参数(除了高度和宽度)。
    猜你喜欢
    • 2019-07-06
    • 2011-09-27
    • 2012-11-06
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    相关资源
    最近更新 更多