Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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_Imageview - Fatal编程技术网

Android 有时图像视图中的图像不显示

Android 有时图像视图中的图像不显示,android,imageview,Android,Imageview,在一个活动中,有4个视图,用户可以根据当前答案上的金额“打赌”该问题的正确答案。图像上的金额随着金额的变化而变化(从零到一包钱,再到一堆钱) 有时,当值被添加到视图中时(通过触摸/单击或从另一个答案拖动),图像不会显示(只有在之前该答案上没有钱时才会出现这种情况) 下面是视图代码(我添加了一些日志和注释): 在用户选择start后,活动将调用initConfig类(布局已绘制且可见) 下面是XML代码 <?xml version="1.0" encoding="utf-8"?> &l

在一个活动中,有4个视图,用户可以根据当前答案上的金额“打赌”该问题的正确答案。图像上的金额随着金额的变化而变化(从零到一包钱,再到一堆钱)

有时,当值被添加到视图中时(通过触摸/单击或从另一个答案拖动),图像不会显示(只有在之前该答案上没有钱时才会出现这种情况)

下面是视图代码(我添加了一些日志和注释):

在用户选择
start
后,活动将调用initConfig类(布局已绘制且可见)

下面是XML代码

<?xml version="1.0" encoding="utf-8"?>
<com.test.game.views.game.AnswerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@android:color/transparent">

    <com.walkme.moneyquiz.views.extended.AutoResizeTextView
        android:id="@+id/answerTextView"
        style="@style/answerTextViewStyle"
        android:text="All at the same time"/>

    <LinearLayout
        android:id="@+id/answerBoxLinerLayout"
        style="@style/answerBetBoxStyle"
        android:orientation="vertical"
        android:background="@drawable/bg_dark_gray_square_blue_border">

        <RelativeLayout
            android:id="@+id/betBoxContainerRelativeLayout"
            style="@style/moneyPackBetRelativeLayoutStyle">

            <ImageView
                android:id="@+id/betBoxTextView"
                style="@style/moneyPackBetImageInRelativeLayoutStyle"
                android:src="@drawable/icn_money_pack_bet_extra_full"/>

        </RelativeLayout>

        <com.walkme.moneyquiz.views.extended.AutoResizeTextView
            android:id="@+id/moneyBetTextView"
            style="@style/betValueTextStyle"
            android:text="5.000$"
            android:singleLine="true"/>

    </LinearLayout>

</com.test.game.views.game.AnswerView>

根据我对您代码的理解,未设置
\u moneyPacktView
的默认图像。当
getImageForAmount()
为0时,给定null返回值,并将带有null参数的setImage()仅设置为可见。也许这就是为什么你的图像没有显示出来。也许您可以在
setImage()中为null参数添加以下代码

或者在您的
getImageForAmount()


调用invalidate后检查图像大小。如果大小不正确,请强制将其设置为正确的大小。

不幸的是,它不起作用。此外,当数量为0时,不应出现任何可见图像。问题是,10次中有7次它工作正常,其他时间图像从不显示,一旦图像停止显示,它就再也不会显示,直到我销毁活动并返回,但根据日志,一切都正常工作:/n不清楚您在哪里设置了_moneyPacktView变量。另外,为什么这个视图有两个getter方法?(getImageView和getMoneyImageView)。请发布设置此变量的代码部分。可能是这个视图没有正确初始化。我在问题中添加了所需的信息,我没有添加主布局,因为它有很多其他的东西和很多很多样式。无论如何,视图总是不同于null,并且具有正确的大小(在这两种情况下,当图像显示和不显示时),这使我相信layoutHm没有问题。。这就是问题所在,在无效调用之后,
ImageView
会将其大小重置为0,并且不会“增长”回来。。但这并不是每次都会发生。。奇怪的
public class AnswerView extends MoneyView
{
    TextView _answerTextView;
    LinearLayout _answerBoxLinerLayout;
    RelativeLayout _betBoxContainerRelativeLayout;

    private String _answer = "";

    public AnswerView(Context context)
    {
        this(context, null);
    }

    public AnswerView(Context context, AttributeSet attrs)
    {
        this(context, attrs, 0);
    }

    public AnswerView(Context context, AttributeSet attrs, int defStyleAttr)
    {
        super(context, attrs, defStyleAttr);
        initConfig(true);
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public AnswerView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
    {
        super(context, attrs, defStyleAttr, defStyleRes);
        initConfig(true);
    }

    @Override
    public void initConfig(boolean setDefaultValues)
    {
        super.initConfig(setDefaultValues);

        _answerTextView = (TextView)findViewById(R.id.answerTextView);
        _moneyValueTextView = (TextView)findViewById(R.id.moneyBetTextView);
        _moneyPacktView = (ImageView)findViewById(R.id.betBoxTextView);
        _answerBoxLinerLayout = (LinearLayout)findViewById(R.id.answerBoxLinerLayout);
        _betBoxContainerRelativeLayout = (RelativeLayout)findViewById(R.id.betBoxContainerRelativeLayout);

        setAnswer(_answer);
        setValue(0l);
    }

    public TextView getTextView()
    {
        return _answerTextView;
    }

    public String getAnswer()
    {
        return _answer;
    }
    public void setAnswer(String answer)
    {
        if(answer == null){ answer = ""; }

        _answer = answer;
        if(_answerTextView != null)
        {
            _answerTextView.setText(_answer);
        }
    }

    public void setNormal()
    {
        _answerBoxLinerLayout.setBackgroundResource(R.drawable.bg_dark_gray_square_blue_border);
        setValue(0l);
        setAlpha(1.0f);
    }
}
<?xml version="1.0" encoding="utf-8"?>
<com.test.game.views.game.AnswerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@android:color/transparent">

    <com.walkme.moneyquiz.views.extended.AutoResizeTextView
        android:id="@+id/answerTextView"
        style="@style/answerTextViewStyle"
        android:text="All at the same time"/>

    <LinearLayout
        android:id="@+id/answerBoxLinerLayout"
        style="@style/answerBetBoxStyle"
        android:orientation="vertical"
        android:background="@drawable/bg_dark_gray_square_blue_border">

        <RelativeLayout
            android:id="@+id/betBoxContainerRelativeLayout"
            style="@style/moneyPackBetRelativeLayoutStyle">

            <ImageView
                android:id="@+id/betBoxTextView"
                style="@style/moneyPackBetImageInRelativeLayoutStyle"
                android:src="@drawable/icn_money_pack_bet_extra_full"/>

        </RelativeLayout>

        <com.walkme.moneyquiz.views.extended.AutoResizeTextView
            android:id="@+id/moneyBetTextView"
            style="@style/betValueTextStyle"
            android:text="5.000$"
            android:singleLine="true"/>

    </LinearLayout>

</com.test.game.views.game.AnswerView>
<style name="answerTextViewStyle">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">0dp</item>
    <item name="android:layout_weight">1</item>
    <item name="android:layout_margin">@dimen/marginSmall</item>
    <item name="android:padding">@dimen/marginSmall</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:textSize">@dimen/textSizeSmall</item>
    <item name="android:gravity">center</item>
    <item name="android:background">@color/mainBlue</item>
</style>
<style name="answerBetBoxStyle">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">0dp</item>
    <item name="android:layout_weight">1</item>
    <item name="android:layout_margin">@dimen/marginSmall</item>
    <item name="android:background">@android:color/transparent</item>
</style>
<style name="moneyPackBetRelativeLayoutStyle">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:background">@android:color/transparent</item>
    <item name="android:layout_gravity">center</item>
</style>
<style name="moneyPackBetImageInRelativeLayoutStyle">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:maxHeight">@dimen/imageHeightMedium</item>
    <item name="android:adjustViewBounds">true</item>
    <item name="android:background">@android:color/transparent</item>
    <item name="android:scaleType">centerInside</item>
    <item name="android:layout_gravity">center</item>
    <item name="android:layout_centerInParent">true</item>
</style>
<style name="betValueTextStyle" >
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">0dp</item>
    <item name="android:layout_weight">0.5</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:textSize">@dimen/textSizeMedium</item>
    <item name="android:gravity">center</item>
</style>
if(drawable == null)
{
  Log.e("AnswerView", "setImage -- Drawable Null");
  _moneyPacktView.setImageDrawable(getContext().getResources().getDrawable(R.drawable.anyDefaultImage));
  _moneyPacktView.setAlpha(1.0f);
  _moneyPacktView.setVisibility(View.VISIBLE);
  invalidate();
}
 if(amount == 0)
 {
   Log.e("AnswerView", "getImageForAmount -- amount == 0 -- Null");
   return getContext().getResources().getDrawable(R.drawable.anyDefaultImage);
 }