【问题标题】:How to show Text depending of Image and Image's position如何根据图像和图像的位置显示文本
【发布时间】:2015-10-15 17:07:18
【问题描述】:

我有一组Image ID

        public Integer[] deckIDs = {
        R.drawable.bashnya,
        R.drawable.blazhenstvo,
        R.drawable.borba,
        R.drawable.card_tarot,
        R.drawable.deystvie,
        R.drawable.odinochestvo,
        R.drawable.opasnost,
        R.drawable.osoznanie,
        R.drawable.otshelnik,
        R.drawable.pamyat,
        R.drawable.pechal,
        R.drawable.peremirie,
        R.drawable.pobeda,
        R.drawable.pomoshch,
        R.drawable.poveshevyi,
        R.drawable.predlagaushchyi,
        R.drawable.presyschenie
};

我将这些Images随机放入ImageViews

    Random card1 = new Random();
    int card1_value = card1.nextInt(16);
    int card2_value = card1.nextInt(16);
    int card3_value = card1.nextInt(16);
    int card4_value = card1.nextInt(16);
    int card5_value = card1.nextInt(16);

    card1_image.setImageResource(deckIDs[card1_value]);
    card2_image.setImageResource(deckIDs[card2_value]);
    card3_image.setImageResource(deckIDs[card3_value]);
    card4_image.setImageResource(deckIDs[card4_value]);
    card5_image.setImageResource(deckIDs[card5_value]);

我还有 5 个TextViews 和很多strings 喜欢

<string name="card1_1">card 1 - text 1</string>
<string name="card1_2">card 1 - text 2</string>
<string name="card1_3"">card 1 - text 3</string>
<string name="card1_4"">card 1 - text 2</string>
<string name="card1_5"">card 1 - text 5</string>
<string name="card2_1"">card 2 - text 1</string>
<string name="card2_2"">card 2 - text 2</string>
...

我需要显示string 之一,这取决于我所拥有的array 中的image 以及它所放置的position(5 个中的1 个)。例如,Images 中的一个如果在第一位,则为 card 1 - text 1,如果在第二位,则为 card 1 - text 2。以此类推

希望你能清楚地理解我的问题并帮助我,因为我的编程技能很弱,所以我卡住了。

我需要补充一点,Images(接近 80)会更多,我希望可以设置文本,具体取决于 string-nameres id,例如

           <string name="card44"">card 44 - text 1</string>

           R.drawable.card44 

在这一点上存在一个完整的问题。我什至不知道如何谷歌

【问题讨论】:

    标签: android string image settext


    【解决方案1】:

    我这样决定我的问题: card_value - 随机 int 用于从 deckIDS 数组中获取卡片名称。此名称等于arraystrings.xml 中的名称之一。使用方法getIdentifier 我得到string 值。

       String fortune_1 = getResources().getResourceEntryName(deckIDs[card1_value]);
    
        int resId_1 = getResources().getIdentifier(fortune_1, "array", getPackageName());
    
        String[] text_of_fortune_1 = getResources().getStringArray(resId_1);
    

    希望对你有用。

    【讨论】:

      【解决方案2】:

      所以对我来说,听起来你有五张“牌”,每张牌都有一个位置。您需要能够生成包含卡号和卡位的字符串。

      您可以创建一个名为“card”的类并让它具有以下属性:

      int position;
      int cardNumber;
      int arrayPosition;
      
      public card(int pos, int card, int arraypos){
        position = pos;
        cardNumber = card;
        arrayPosition = arraypos;
      }
      

      在类中有一个函数可以生成您要查找的字符串:

      public string getCardString(){
        return String.format("card %1$d - text %2$d", cardNumber, position);
      }
      

      上面的方法getCardString()会产生一个字符串,就像你要找的那样(即“card 3 - text 2”)。

      然后您可以使用setText() 属性以编程方式在代码中设置文本视图的值。 IE。 textviewX.setText(cardX.getCardString());

      【讨论】:

        猜你喜欢
        • 2014-02-18
        • 2015-10-18
        • 1970-01-01
        • 2021-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-18
        • 1970-01-01
        相关资源
        最近更新 更多