Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 循环时从错误的资源文件夹中提取可提取内容_Android_Rotation_Android Activity_Android Resources_Android Drawable - Fatal编程技术网

Android 循环时从错误的资源文件夹中提取可提取内容

Android 循环时从错误的资源文件夹中提取可提取内容,android,rotation,android-activity,android-resources,android-drawable,Android,Rotation,Android Activity,Android Resources,Android Drawable,把我的头发拔出来。因此,我正在使用一个应用程序,该应用程序具有多种类型的绘图功能,我将它们放在如下结构中: res/ //Portrait resources drawable-mdpi/ drawable-hdpi/ drawable-xhdpi/ //Landscape resources drawable-land-mdpi/ drawable-land-hdpi/ drawable-land-xhdpi/ 编辑我甚至尝试

把我的头发拔出来。因此,我正在使用一个应用程序,该应用程序具有多种类型的绘图功能,我将它们放在如下结构中:

res/
    //Portrait resources
    drawable-mdpi/
    drawable-hdpi/
    drawable-xhdpi/

    //Landscape resources
    drawable-land-mdpi/
    drawable-land-hdpi/
    drawable-land-xhdpi/
编辑我甚至尝试将特定于肖像的可绘制对象放在
可绘制端口mdpi
下,等等,结果都是一样的

我有一个自定义的
视图
,我正在使用它在运行时拉入可绘图项。下面是一个简化的示例,但这就是我遇到的问题:

public class CustomView extends FrameLayout {
    private ImageView mBackgroundView;

    public CustomView (Context context) {
        super(context);
        initialize();
    }

    public CustomView (Context context, AttributeSet attrs) {
        super(context, attrs);
        initialize();
    }

    public CustomView (Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        initialize();
    }

    private void initialize () {
        mBackgroundView = new ImageView(getContext());
        mBackgroundView.setImageResource(R.drawable.my_resource);
        addView(mBackgroundView, wrapContent());
    }

    private LayoutParams wrapContent () {
        return new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    }
}   
我希望当我转到横向时(首先让我澄清一下,我没有处理此
活动的清单中的
配置更改
),并且此
视图被重新创建,
mBackgroundView
应该获得
可绘制土地xhdpi
。相反,当我向后旋转时,我应该在
可绘制的xhdpi
中获得可绘制的

现在这里是它变得奇怪的地方。我可以确认所有可绘制的都在那里并被检测到,因为如果我在横向中启动应用程序,我会得到正确的横向可绘制的。然而,在旋转时,风景画仍然保留,我没有得到肖像画。相反地,如果我在肖像中启动,我就只能使用肖像画了。


当我以编程方式获取资源时,是否需要处理一些特殊情况来“重置”资源或其他东西?

因此,我已经找出了问题所在,老实说,我不确定这是我的误解还是安卓系统中的错误。我不想将此添加为问题的一部分(回头看,我应该有),但我的可绘制层列表是一个可绘制的层列表,其中两个图像堆叠在一起(一个阴影,一个图像在阴影上方):


什么版本的Android?您是否启用了屏幕自动旋转功能?@cdonner是的,屏幕会旋转,我会在
布局栏
中定义布局。它只是一个不会改变的可拉丝。另外,这是在Android 4.2上(Nexus 4和Galaxy Nexus都显示了这个问题)。我刚刚发现我也有同样的问题,我在所有活动中都使用了这个样式,带有背景色和位图的形状,但它似乎取决于它开始的位置,它不会适应旋转。可以用ImageView显示xml吗?这可以用于样式主题吗?
<layer-list xmlns:android="http://schemas.android.com/apk/res/android>
    <item>
        <bitmap android:src="@drawable/shadow"/>
    </item>

    <item>
        <bitmap android:src="@drawable/image" android:gravity="top|center_horizontal"/>
    </item>
</layer-list>