![在此处输入图像描述][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。
最佳答案
我不太确定您要做什么,但我认为您可能希望在 RelativeLayout 中包含这两个 View ,您可以通过将其中一个声明为 android:layout_toRightOf
另一个来声明它们应该并排渲染。也就是说,将 android:layout_toRightOf="@+id/ScrollView"
行添加到 ListView 的 XML 中。
关于java - ListView 的大小或位置不符合我的预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22240201/