2

我刚刚开始开发安卓应用程序。我有一个布局问题。我想为我的应用程序创建主屏幕。这是一个有 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有可能吗?或者,也许从列表视图中制作菜单会更好?

我一直在阅读有关线性布局和权重属性的信息。拜托,你能帮帮我吗?这是我的第一个布局,我会感谢我应该使用的任何关于布局的建议。

非常感谢,最好的问候!

PD:对不起我的英语。

4

3 回答 3

1

如果您希望显示所有项目(没有滚动),那么ListView. 改用 aLinearLayout并将每个菜单项的 layout_weight 设置为 1。

于 2013-04-30T16:05:46.093 回答
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>
于 2013-04-30T16:13:41.160 回答
1

正如其他人所说,最好使用LinearLayout。就像你提到的,你也可以使用 weight 属性。

同等重量的孩子

要创建一个线性布局,其中每个孩子在屏幕上使用相同数量的空间,请将每个视图的 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。

于 2013-04-30T17:17:44.563 回答