我刚刚开始开发Android应用程序。我有一个布局问题。我想为我的应用程序创建主屏幕。这是一个包含7个选项的菜单,每个选项都是左侧的图标,短文本和左侧的检查(开/关组件)。
我已经在列表视图元素中编写了它,我创建了一个具有此布局的简单适配器:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView android:id="@+id/icon"
android:layout_width="?android:attr/listPreferredItemHeight"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:src="@drawable/ic_action_io"/>
<TextView android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/icon"
android:layout_alignParentTop="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:singleLine="true" />
</RelativeLayout>
菜单总会有7个选项,我希望listview填满屏幕的高度。每个元素具有相同的高度。有没有可能与listview?或者,或许最好从列表视图中制作菜单?
我一直在阅读线性布局和重量属性。拜托,你能帮帮我吗?这是我的第一个布局,我要感谢我应该使用的任何建议aboput布局。
非常感谢,最诚挚的问候!
P.D:对不起我的英文。
答案 0 :(得分:1)
如果你想要显示所有项目(没有滚动)那么ListView
就没有用了。请改用LinearLayout
并将每个菜单项的layout_weight设置为1。
答案 1 :(得分:1)
我会使用一个Linearlayout,在里面我把所有项目都显示出来......
这样的事情:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<RelativeLayout android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<ImageView android:id="@+id/icon"
android:layout_width="?android:attr/listPreferredItemHeight"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:src="@drawable/ic_launcher"/>
<TextView android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/icon"
android:layout_alignParentTop="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Texto"
android:singleLine="true" />
</RelativeLayout>
<RelativeLayout android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<ImageView android:id="@+id/icon"
android:layout_width="?android:attr/listPreferredItemHeight"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:src="@drawable/ic_launcher"/>
<TextView android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/icon"
android:layout_alignParentTop="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Texto"
android:singleLine="true" />
</RelativeLayout>
<!-- Repeat the item five times more -->
</LinearLayout>
答案 2 :(得分:1)
正如其他人说的那样更好地使用LinearLayout。就像你提到的那样,你也可以使用权重属性。
同等重视儿童
要创建一个线性布局,其中每个孩子在屏幕上使用相同的空间量,请将每个视图的android:layout_height设置为“0dp”(对于垂直布局)或者将每个视图的android:layout_width设置为“ 0dp“(用于水平布局)。然后将每个视图的android:layout_weight设置为“1”。
当您尝试实现菜单时,我认为最好的方法是将每个RelativeLayout(带有textview和imageview)替换为按钮。所以,你的布局就是这样:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="7.0" > //Defines the maximum weight sum
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:height="0dp"
android:layout_weight="1"
android:text="Option 1"
android:drawableLeft="@drawable/icon1"
android:onClick="handleOption"/> // method to handle onClick
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:height="0dp"
android:layout_weight="1"
android:text="Option 2"
android:drawableLeft="@drawable/icon2"
android:onClick="handleOption"/> // method to handle onClick
//Add more five buttons
.
.
.
在您的活动中,您应该使用setContentView()
加载此布局,并且必须实施下面的handleOption
方法来处理每个按钮的onClick
事件。
public view handleOption(View view)
{
switch(view.getId()) ....
}
通过这种方式,您不需要实现onClickListener接口,每个按钮都有一个方法,并为每个按钮设置onClickListener。