我有一个带有4个浮动标签的布局,在它们下面有一个按钮。
我想为用户提供一个选项,在按下按钮以在其下方显示新布局时,每次点击(最多3个布局)
上的textView和imageView在内,请参阅请求的布局示例
我的问题是这种布局的最佳设计是什么?
是要添加带有可见的ALD布局并单击按钮显示时,每次一个布局都显示?
或以编程方式添加它们?
我也想为用户提供一个选项,以删除他想要的三个布局。
预先感谢。
最简单的选项可能就是您提出的内容 - 添加XML布局文件中的所有布局,并将单个布局的可见性设置为" gone gone"。如果要添加更多的布局,则可能需要考虑以程序为程序创建它们,以节省资源,而不是在创建活动时加载所有图像。
您可能需要将布局放在其中的所有内容(看起来像是垂直线性布局向我面向我),以便在设置可见时不会从框架中移出框架。
。因此,您需要一个按钮的on Click函数,这使得可见下一个布局,而另一个则再次隐藏了布局。
您的XML看起来像这样(将其扔进您喜欢使用的任何布局中,我使用了垂直线性布局):
<Button
android:text="Button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button"
android:onClick="addLayout" />
<LinearLayout
android:orientation="vertical"
android:layout_weight="1"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/layout1">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:layout_gravity="center_horizontal" />
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@mipmap/ic_launcher"
android:id="@+id/imageView" />
<Button
android:text="hide"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:onClick="hideParent (MainActivity)" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_weight="1"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/layout2">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:layout_gravity="center_horizontal" />
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@mipmap/ic_launcher"
android:id="@+id/imageView" />
<Button
android:text="hide"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button3"
android:onClick="hideParent (MainActivity)" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_weight="1"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/layout3">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:layout_gravity="center_horizontal" />
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@mipmap/ic_launcher"
android:id="@+id/imageView" />
<Button
android:text="hide"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button4"
android:onClick="hideParent (MainActivity)" />
</LinearLayout>
正如我所说,包裹所有这些可能会有所帮助,这只是一个基本想法。您的主要人物看起来像这样:
LinearLayout[] layouts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
layouts = new LinearLayout[3];
layouts[0] = (LinearLayout) findViewById(R.id.layout1);
layouts[1] = (LinearLayout) findViewById(R.id.layout2);
layouts[2] = (LinearLayout) findViewById(R.id.layout3);
}
public void hideParent(View v) {
((LinearLayout)v.getParent()).setVisibility(View.GONE);
}
public void addLayout(View v) {
for (int i = 0; i <= 2; i++) {
if (layouts[i].getVisibility() == View.GONE) {
layouts[i].setVisibility(View.VISIBLE);
break;
}
}
}
希望有帮助的是,您的实际编码方式很大程度上取决于要实现的灵活性和布局数量。