我有一个RelativeLayout
家长,其中ImageButton
位于layout_below
内,排列着layout_alignRight
,gone
等。这为我提供了预期的布局。
。
我希望能够折叠其中一些按钮,以便后面的按钮向上移动一个空格。如果我用GridView
隐藏一个或多个按钮的可见性,整个事情就会变得混乱,因为它们相对于彼此布局。我不能诉诸RelativeLayout
,因为我必须能够在API 7 +上运行。
所以基本上,我正在寻找类似CSS浮动的东西。这可以通过<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="?theme_background" >
<RelativeLayout
android:id="@+id/headerLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dip"
android:background="?theme_header_background">
<ImageButton
android:id="@+id/imgBtnAbout"
android:layout_width="30dip"
android:layout_height="30dip"
android:background="@drawable/ic_action_about"
android:layout_alignParentLeft="true"
android:scaleType="fitXY"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/header"
android:text="App Name"
android:textSize="24sp"
android:textStyle="bold"
android:textColor="?theme_header_text"
android:layout_centerInParent="true" />
<ImageButton
android:id="@+id/imgBtnSetting"
android:layout_width="30dip"
android:layout_height="30dip"
android:background="@drawable/ic_action_settings"
android:layout_alignParentRight="true"/>
</RelativeLayout>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:orientation="vertical"
android:background="?theme_background"
android:layout_below="@+id/headerLayout">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:weightSum="1.0"
tools:context=".MainActivity">
<ImageButton
android:layout_width="fill_parent"
android:layout_height="100dp"
android:id="@+id/imBtn1"
android:scaleType="centerCrop"
android:background="#222"
android:layout_margin="5dp" />
<ImageButton
android:layout_width="fill_parent"
android:layout_height="100dp"
android:id="@+id/imBtn2"
android:layout_below="@+id/imBtn1"
android:scaleType="centerCrop"
android:background="#222"
android:layout_margin="5dp" />
<ImageButton
android:layout_width="fill_parent"
android:layout_height="50dp"
android:id="@+id/imBtn3"
android:layout_below="@+id/imBtn2"
android:scaleType="centerCrop"
android:background="@null"
android:layout_margin="5dp" />
<View android:id="@+id/fakeView1"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_centerInParent="true"
android:layout_below="@+id/imBtnAd" />
<ImageButton
android:layout_width="fill_parent"
android:layout_height="100dp"
android:id="@+id/imBtn4"
android:layout_alignRight="@+id/fakeView1"
android:layout_alignTop="@+id/fakeView1"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:background="#222"
android:layout_margin="5dp"/>
<ImageButton
android:layout_width="fill_parent"
android:layout_height="100dp"
android:id="@+id/imBtn5"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:background="#222"
android:layout_alignLeft="@+id/fakeView1"
android:layout_alignTop="@+id/fakeView1"
android:layout_margin="5dp"/>
<View android:id="@+id/fakeView2"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_centerInParent="true"
android:layout_below="@+id/imBtnBiz" />
<ImageButton
android:layout_width="fill_parent"
android:layout_height="100dp"
android:id="@+id/imBtn6"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:background="#222"
android:layout_alignRight="@+id/fakeView2"
android:layout_alignTop="@+id/fakeView2"
android:layout_alignParentLeft="true"
android:layout_margin="5dp"/>
<ImageButton
android:layout_width="fill_parent"
android:layout_height="100dp"
android:id="@+id/imBtn7"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:background="#222"
android:layout_alignLeft="@+id/fakeView2"
android:layout_alignTop="@+id/fakeView2"
android:layout_margin="5dp"/>
<View android:id="@+id/fakeView3"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_centerInParent="true"
android:layout_below="@+id/imBtnAuto" />
<ImageButton
android:layout_width="fill_parent"
android:layout_height="100dp"
android:id="@+id/imBtn8"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:background="#222"
android:layout_alignRight="@+id/fakeView3"
android:layout_alignTop="@+id/fakeView3"
android:layout_margin="5dp"/>
<ImageButton
android:layout_width="fill_parent"
android:layout_height="100dp"
android:id="@+id/imBtn9"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:background="#222"
android:layout_alignLeft="@+id/fakeView3"
android:layout_alignTop="@+id/fakeView3"
android:layout_margin="5dp"/>
<View android:id="@+id/fakeView4"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_centerInParent="true"
android:layout_below="@+id/imBtnHumor" />
<ImageButton
android:layout_width="fill_parent"
android:layout_height="100dp"
android:id="@+id/imBtn10"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:background="#222"
android:layout_alignRight="@+id/fakeView4"
android:layout_alignTop="@+id/fakeView4"
android:layout_margin="5dp"/>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
实现还是其他布局更好?
这是布局(简化):
{{1}}
答案 0 :(得分:1)
可能您可以选择其他策略:不要尝试隐藏按钮,而是仅显示所需的按钮。您可以这样编程地执行此操作:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(showButtonB1) {
Button b1 = new Button(this);
//then set button image here
layout.addView(b1);
}
if(showOtherButton){
//...the same
}
//when all buttons needed were created:
setContentView(layout);
}