【发布时间】:2018-08-21 11:52:50
【问题描述】:
我正在尝试根据Array 中包含的信息以编程方式创建LinearLayout。
让我解释一下:
我创建了一个不在 PlayStore 上的专业应用程序。
我有以下数组,手动填充,(一种全局变量):
static final String[][] reseaux = new String[][] {
{"Net1","192.168.0.1"},
{"Net2","192.168.10.1"},
{"Net3","192.168.20.1"},
{"Net4","192.168.30.1"}
};
对于某些客户,它只包含一个条目:
static final String[][] reseaux = new String[][] {
{"Net1","192.168.0.1"}
};
根据只包含一个条目的Array,我创建了以下布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/welcome"
android:layout_gravity="center"
xmlns:android="http://schemas.android.com/apk/res/android"
tools:ignore="Overdraw">
<include
android:id="@+id/tool_bar"
layout="@layout/tool_bar" />
<ScrollView
android:layout_height="match_parent"
android:layout_width="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_marginTop="15dp"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false">
<LinearLayout
android:id="@+id/linearLayoutTest"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
还有代码:
LinearLayout l = findViewById(R.id.linearLayoutTest);
for (int i = 0; i < reseaux.length; ++i) {
final int id = i;
ImageButton resBtn = new ImageButton(this);
TextView tv = new TextView(this);
tv.setGravity(Gravity.CENTER | Gravity.BOTTOM);
tv.setText(reseaux[i][0]);
resBtn.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.button_reseaux));
resBtn.setBackgroundColor(getResources().getColor(R.color.transparent));
l.addView(resBtn);
l.addView(tv);
resBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Check network
if (CheckNetworkStatus.isNetworkAvailable(getApplicationContext())) {
Intent i = new Intent(getApplicationContext(),
HomeReseauActivity.class);
startActivity(i);
BASE_URL = null;
nomReseau = null;
BASE_URL = reseaux[id][1];
nomReseau = reseaux[id][0];
} else {
//Error message if no network connexion
if (toastMessage != null) toastMessage.cancel();
toastMessage = Toast.makeText(HomeActivity.this, getString(R.string.networkError), Toast.LENGTH_LONG);
toastMessage.show();
}
}
});
给我以下最适合我的结果:
现在,当我的 Array 中有多个条目时,我得到的结果如下:
这不适合我。我想要三个图标的水平线。当一行被填满时,它会创建一个由三个图标组成的新行,等等。
这是一个快速编辑,用油漆来展示我想要什么:
我认为解决方案一定很简单..但我无法得到这个结果。
放纵我的代码,我自学一切,肯定有更好的编写方法:-)
希望有人能帮助我!
【问题讨论】:
-
使用
GridView。 -
RecyclerView 和 GridLayoutManager 会更好
-
用户回收站视图的更好方法
-
您可能必须将 recyclerView 与 GridLayoutManager 一起使用
标签: android android-layout android-linearlayout