首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:防止不同的旋转高度(空的和填充的)

Android:防止不同的旋转高度(空的和填充的)
EN

Stack Overflow用户
提问于 2014-02-02 16:59:43
回答 3查看 2.8K关注 0票数 6

我在布局上有一些旋转器,并在后台使用加载程序从db加载数据。问题是,在加载数据之前,空纺纱机的高度较小。所以布局跳跃。

我怎么才能阻止这种跳跃呢?

编辑(添加了旋转行布局)

旋转行:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/Text1"
        style="@style/StyleSpinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

旋转器下拉行:

代码语言:javascript
复制
<?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="wrap_content"
    android:padding="@dimen/style_spinner_row_padding" >

    <TextView
        android:id="@+id/Text1"
        style="@style/StyleSpinnerDropDownRow1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />

    <TextView
        android:id="@+id/Text2"
        style="@style/StyleSpinnerDropDownRow2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/Text1" />

</RelativeLayout>

指定的样式:

代码语言:javascript
复制
<!-- // Spinner // -->
<style name="StyleSpinner" parent="AppTheme">
    <item name="android:textStyle">bold</item>
    <item name="android:gravity">start</item>
    <item name="android:textSize">@dimen/default_text_size_normal</item>
    <item name="android:padding">@dimen/style_spinner_row_padding</item>
</style>

<style name="StyleSpinnerDropDownRow1" parent="AppTheme">
    <item name="android:textStyle">bold</item>
    <item name="android:textSize">@dimen/default_text_size_normal</item>
</style>

<style name="StyleSpinnerDropDownRow2" parent="AppTheme">
    <item name="android:textStyle">normal</item>
    <item name="android:textSize">@dimen/default_text_size_small</item>
</style>

屏幕截图:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-28 12:02:14

我刚刚遇到了同样的问题,并设法解决了它为自己,所以我做了如下。

我是膨胀android.R.layout.simple_spinner_dropdown_item在我的旋转适配器为每个项目布局。当我看这个布局时,我注意到它没有边距,只有一个固定的高度,来自android:attr/dropdownListPreferredItemHeight.。

因此,我想我会得到这个列表首选的项目高度值,并设置它作为我的纺丝器的最低高度。使用this stackoverflow question的答案,我能够获得正确的值并将其设置为我的旋转器。

代码语言:javascript
复制
    android.util.TypedValue value = new android.util.TypedValue();
    getActivity().getTheme().resolveAttribute(android.R.attr.listPreferredItemHeight, value, true);
    android.util.DisplayMetrics metrics = new android.util.DisplayMetrics();
    getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
    float ret = value.getDimension(metrics);

    mSpinner.setMinimumHeight((int) (ret - 1 * metrics.density));

我删除了1 1dip,因为返回的值似乎被舍入了,这使得它过高了1像素。

现在我所有的旋转器都是一样高的,不管它们是有物品还是空的。

票数 4
EN

Stack Overflow用户

发布于 2014-03-26 18:11:36

为了防止高度在后台加载时发生变化,我只创建了一个none数组,并在xml中将条目设置为:

在array.xml中

代码语言:javascript
复制
 <string-array name="none">
        <item></item>
 </string-array>

在纺丝机里

代码语言:javascript
复制
android:entries:@array/none

高度不会改变,因为一旦加载程序完成,它将替换旋转器的内容。

票数 1
EN

Stack Overflow用户

发布于 2015-04-26 12:00:38

我使用了一个带有空数组的arrayAdapter<String>

得到所需之后,只需获得一个新适配器或使用相同的适配器并调用notifyDataSetChanged()即可。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21513366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档