我为我的应用创建了颜色目录,并决定使用数组适配器来扩充此目录。我的颜色布局如下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:layout_marginRight="40dp"
android:layout_marginEnd="40dp">
<ImageView
android:id="@+id/fav_swatch"
android:layout_width="80dp"
android:layout_height="match_parent"/>
<TextView
android:id="@+id/fav_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/fav_swatch"
android:layout_toEndOf="@+id/fav_swatch"
android:paddingLeft="30dp"
android:paddingStart="30dp"
android:paddingTop="10dp"
android:textSize="20sp"
/>
<TextView
android:id="@+id/fav_coord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/fav_swatch"
android:layout_toEndOf="@+id/fav_swatch"
android:layout_below="@+id/fav_name"
android:paddingLeft="30dp"
android:paddingStart="30dp"
android:paddingTop="10dp"
android:textSize="20sp"
/>
<ImageButton
android:id="@+id/btn_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginLeft="10dp"
android:background="@drawable/ic_clear"/>
<ImageButton
android:id="@+id/btn_modify"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/btn_delete"
android:layout_toStartOf="@+id/btn_delete"
android:background="@drawable/ic_edit"/>
</RelativeLayout>
</FrameLayout>
我的活动布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.design.widget.FloatingActionButton
android:id="@+id/fav_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin" />
<ListView
android:id="@+id/fav_lv"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ListView>
</FrameLayout>
所以这段代码导致了所需的布局:
问题是Android警告我
此
RelativeLayout
或其父FrameLayout
无效
这并不是没用,因为如果我只保留RelativeLayout
作为父母:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:layout_marginRight="40dp"
android:layout_marginEnd="40dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/fav_swatch"
android:layout_width="80dp"
android:layout_height="match_parent"/>
<TextView
android:id="@+id/fav_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/fav_swatch"
android:layout_toEndOf="@+id/fav_swatch"
android:paddingLeft="30dp"
android:paddingStart="30dp"
android:paddingTop="10dp"
android:textSize="20sp"
/>
<TextView
android:id="@+id/fav_coord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/fav_swatch"
android:layout_toEndOf="@+id/fav_swatch"
android:layout_below="@+id/fav_name"
android:paddingLeft="30dp"
android:paddingStart="30dp"
android:paddingTop="10dp"
android:textSize="20sp"
/>
<ImageButton
android:id="@+id/btn_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginLeft="10dp"
android:background="@drawable/ic_clear"/>
<ImageButton
android:id="@+id/btn_modify"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/btn_delete"
android:layout_toStartOf="@+id/btn_delete"
android:background="@drawable/ic_edit"/>
</RelativeLayout>
边距被忽略了,我得到了这种丑陋的布局:
我的问题是:是否有任何方法可以获得正确的布局,而无需放置“无用的”#39; FrameLayout
以获得更清晰,更优化的代码?
编辑:有趣的java代码:
// Construct the data source
ArrayList<Colour> arrayOfColours = new ArrayList<>();
final ColourAdapter adapter = new ColourAdapter(this, arrayOfColours);
ListView lv = (ListView) findViewById(R.id.fav_lv);
lv.setAdapter(adapter);
final Colour[] colour = new Colour[ca.getMaxNumberOfFavColours()];
for (int i = 0; i < numberOfColours; i++) {
colour[i] = new Colour(colourPixel[i], colourName[i]);
adapter.add(colour[i]);
}
答案 0 :(得分:1)
在您的方案中,FrameLayout
包含一个子元素RelativeLayout
。您的所有其他元素都包含在RelativeLayout
中。可能是因为Android Studio会给你一个警告。
此RelativeLayout或其父FrameLayout无用。
我不明白你在RelativeLayout
内FrameLayout
的观点。相反,我也建议使用其中任何一个。
此外,只需在第二个场景中执行此操作即可获得相同的结果...
RelativeLayout
删除保证金。android:padding="20dp"
。{/ li>中添加RelativLayout
醇>
如果您对此有任何疑问,请与我们联系。
我建议您see the diff. in margin and padding并避免为您的布局的最外层容器提供边距。
PS:开发人员在出现错误之前不会过多关注警告。 :P