Listview没有像我期望的那样大小或位置

时间:2014-03-07 02:19:56

标签: java android listview dialog scrollview

![在此输入图像描述] [1]我在对话框中有一个ListView和一个ScrollView。我希望ListView和ScrollView填满对话框的一半。如果将ScrollView中的EditText设置为160dp,我似乎只能设置宽度。无论如何都要这样做,没有特定的dp?

以下代码会发生以下情况:

https://drive.google.com/file/d/0Bxf-D6ENUTuAU21wclVpWkJUdTg/edit?usp=sharing

这是ScrollView:search.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <EditText
            android:id="@+id/search_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:singleLine="true"
        />

        <TextView
            android:id="@+id/primary_role"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="10dp"
            android:text="Primary Role"
            android:textSize="18sp"
        />

        <CheckBox
            android:id="@+id/primary_assassin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Assassin"
        />

        <CheckBox
            android:id="@+id/primary_fighter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Fighter"
        />

        <CheckBox
            android:id="@+id/primary_jungle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Jungler"
        />

        <CheckBox
            android:id="@+id/primary_mage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Mage"
        />

        <CheckBox
            android:id="@+id/primary_marksman"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Marksman"
        />

        <CheckBox
            android:id="@+id/primary_support"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Support"
        />

        <CheckBox
            android:id="@+id/primary_tank"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Tank"
        />

        <TextView
            android:id="@+id/secondary_role"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="10dp"
            android:text="Secondary Role"
            android:textSize="18sp"
        />

        <CheckBox
            android:id="@+id/secondary_assassin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Assassin"
        />    

        <CheckBox
            android:id="@+id/secondary_fighter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Fighter"
        />

        <CheckBox
            android:id="@+id/secondary_jungle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Jungler"
        />

        <CheckBox
            android:id="@+id/secondary_mage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Mage"
        />

        <CheckBox
            android:id="@+id/secondary_marksman"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Marksman"
        />

        <CheckBox
            android:id="@+id/secondary_support"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Support"
        />

        <CheckBox
            android:id="@+id/secondary_tank"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="25dp"
            android:text="Tank"
        />

    </LinearLayout>

</ScrollView>

这是我制作的自定义列表项:list_item.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/iv"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_alignParentLeft="true"
        android:src="@drawable/ic_launcher"
    />

    <TextView
        android:id="@+id/tv"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_toRightOf="@id/iv"
        android:layout_centerVertical="true"
        android:singleLine="true"
        android:textSize="18sp"
    />

</RelativeLayout>

这是对话框用来显示的xml:listview.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:gravity="center">

    <include
        layout="@layout/search"
        android:id="@+id/search"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
    />

    <ListView
        android:id="@+id/list"
        android:layout_toRightOf="@id/search"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    />

</RelativeLayout>

这是我的mainActivity.java文件

String[] example = {"example1", "example2", "example3"};

final Dialog dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.listView);

dialog.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);

final ListView list_view = (ListView)dialog.findViewById(R.id.list);
final ArrayAdapter<String> list_array_adapter = new ArrayAdapter<String>(MainActivity.this, R.layout.list_item, R.id.iv, example);
list_view.setAdapter(list_array_adapter);

list_view.setOnItemClickListener(new OnItemClickListener() 
{
    @Override
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
    {
        // ListView Clicked item index
        int itemPosition = position;
        // ListView Clicked item value
        String itemValue = (String) list_view.getItemAtPosition(position);
        // Show Alert 
        Toast.makeText(getApplicationContext(),"Position :"+itemPosition+"  ListItem : " +itemValue , Toast.LENGTH_LONG).show();
    }
});

当我使用以下代码时会发生这种情况:

https://drive.google.com/file/d/0Bxf-D6ENUTuASE1KSmFZZDNkams/edit?usp=sharing

这就是我想要的,而不必在EditText下使用android:layout_width = "160dp"

在两张图片之间唯一的区别是在EditText下,第二张图片的宽度是160dp。

2 个答案:

答案 0 :(得分:0)

我不确定你要做什么,但我认为你可能希望在RelativeLayout中包含这两个视图,你可以声明它们应该在旁边呈现通过声明一个是android:layout_toRightOf另一个。也就是说,将行android:layout_toRightOf="@+id/ScrollView"添加到ListView的XML。

答案 1 :(得分:0)

我发现了我需要做的事情。我可以使它工作的唯一方法是创建一个没有文本的TextView水平居中,并具有ListView toTheRight和search.xml toTheLeft,现在它可以工作。