我有一个 Theme.Dialog 活动,它向用户显示设备列表。该活动使用带有动态创建的 ArrayAdapter 的 ListView 来显示设备列表。然而,出于某种原因,ListView(以及活动本身)没有调整大小以正确包装其内容。相反,它的作用就像是设置了大约一半屏幕的宽度(并且这在具有不同屏幕尺寸的设备上仍然存在)。不过,我一生都无法弄清楚这是在哪里设置的。
谁能看到我错过了什么?(我试图从以下代码中删除不相关的位)
这是我的活动:
public class DeviceListActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Setup the window
setContentView(R.layout.device_list);
// Initialize array adapters
mPairedDevicesArrayAdapter = new ArrayAdapter<String>(this, R.layout.device_name);
// Find and set up the ListView for paired devices
ListView pairedListView = (ListView) findViewById(R.id.paired_devices);
pairedListView.setAdapter(mPairedDevicesArrayAdapter);
//the following doesn't do anything
//getWindow().setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
mPairedDevicesArrayAdapter.add("asdfasdfa");
}
}
这是 device_list.xml:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@id/paired_devices"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:stackFromBottom="true"
android:background="#0000FF"/>
<!-- the colour shows the listview stretching wider than the text it contains -->
</LinearLayout>
这是我的 AndroidManifest.xml 的相关部分:
<activity
android:name=".DeviceListActivity"
android:configChanges="keyboardHidden|orientation"
android:label="too wide"
android:theme="@android:style/Theme.Dialog">
</activity>
这是 device_name.xml(用于初始化 ArrayAdapter:
<?xml version="1.0" encoding="UTF-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5.0dip"
android:textSize="18.0sp" />
如果你一直坚持到现在阅读这个问题,我已经很感激了。
这是最终结果(我的应用程序的其余部分在后台):