gpt4 book ai didi

Android:自定义首选项屏幕尺寸问题

转载 作者:行者123 更新时间:2023-11-30 04:32:04 26 4
gpt4 key购买 nike

我正在使用自定义布局来显示首选项,以便我可以在屏幕底部插入广告横幅。这个想法是让横幅贴在页面的底部,并在屏幕的其余部分以 ScrollView 的形式显示首选项。我对偏好设置的高度有疑问。我目前在下面的 XML 布局中将其硬编码为“2000dip”。

它工作正常,横幅位于底部,首选项位于可 ScrollView 的顶部。

但是具有硬编码的高度值是不好的,我希望它自动设置为首选项采用的确切高度,因为当前它太短或太长(首选项后有空白区域)。我试图用 wrap_content 或 fill_parent 替换硬编码值,但没有成功。有什么想法吗?

在我的 PreferenceActivity 中,我包含了以下两行:

    setContentView(R.layout.preferences_scrollable);
addPreferencesFromResource(R.layout.preferences);

并且我在 xml 文件 preferences_scrollable.xml 中定义了一个布局 preferences_scrollable:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical">

<ScrollView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_weight="1"
android:id="@+id/pref_scrollable_sv">

<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" android:orientation="vertical"
android:id="@+id/pref_scrollable_ll">

<ListView android:id="@android:id/list"
android:layout_width="fill_parent" android:layout_height="2000dip">

</ListView>
</LinearLayout>
</ScrollView>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" android:orientation="vertical">
<com.google.ads.AdView android:id="@+id/ad"
ads:adSize="BANNER" android:layout_width="fill_parent"
ads:loadAdOnCreate="true" ads:adUnitId="xxx"
android:layout_height="wrap_content"
android:layout_weight="0"/>
</LinearLayout>
</LinearLayout>

最佳答案

在 ScrollView 中使用属性“android:fillViewport”使其具有正确的高度。所以这将是解决方案,除了使用此属性, View 不会滚动,或者滚动得非常糟糕。在我看来,这像是一个 Android 错误。

无论如何,可行的解决方案是删除 ScrollView 并改用 LinearLayout(也支持滚动)。布局正确地与顶部的可滚动首选项列表(内容由 Java 代码填充)和底部的广告横幅一起使用,如下所示。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical">

<LinearLayout android:layout_width="fill_parent"
android:id="@+id/ad_layout" android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentBottom="true">

<com.google.ads.AdView android:id="@+id/ad"
ads:adSize="BANNER" android:layout_width="fill_parent"
ads:loadAdOnCreate="true" ads:adUnitId="xxx"
android:layout_height="wrap_content" primaryTextColor="#FFFFFF"
secondaryTextColor="#CCCCCC" />
</LinearLayout>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:layout_above="@+id/ad_layout">

<ListView android:id="@android:id/list" android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
</RelativeLayout>

关于Android:自定义首选项屏幕尺寸问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7529853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com