Создание красивого кода (верстка) - PullRequest
2 голосов
/ 22 июля 2010

Итак, я сделал небольшой фрагмент кода, который будет вставлять и манипулировать несколькими изображениями. Теперь моя главная проблема в том, что это очень уродливо и долго, мне было интересно, можно ли что-нибудь сделать, чтобы сделать его красивее.

    RelativeLayout mRelativeLayout = (RelativeLayout) findViewById(R.id.board);

    ImageView i = new ImageView(this);
    i.setImageResource(R.drawable.blue_1);
    i.setId(400);

    ImageView j = new ImageView(this);
    j.setImageResource(R.drawable.red_1);
    j.setId(401);

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(40,62);
    params.addRule(mRelativeLayout.ALIGN_PARENT_BOTTOM);
    RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(40,62);
    params1.addRule(mRelativeLayout.ALIGN_PARENT_BOTTOM);
    params1.addRule(mRelativeLayout.RIGHT_OF, 400);    

    mRelativeLayout.addView(i, params);
    mRelativeLayout.addView(j, params1);
    setContentView(mRelativeLayout);

Например, я пробовал использовать только один макет, но, похоже, он влияет на оба изображения, даже если я изменяю его после добавления первого изображения.

Также у меня есть функция, которая может возвращать строку, такую ​​как blue_1 или red_1, как строку, чтобы помочь мне напечатать мои изображения, но она не позволяет мне помещать строки в i.setImageResource для получения изображения: (

Что я могу сделать?

1 Ответ

2 голосов
/ 22 июля 2010

Лучший способ привести в порядок ваш код - это избавиться почти от всего этого и просто определить свой макет в файле XML.Таким образом, вы можете просто вызвать setContentView(R.layout.my_layout_name) вместо того, чтобы вручную создавать виджеты и параметры макета самостоятельно.Если вы не слишком знакомы с объявлением макетов в XML, взгляните на dev docs .Кроме того, если вам нужно создать отдельные части пользовательского интерфейса по отдельности, вы можете надуть макет с помощью LayoutInflater.

. Для второго вопроса *У класса 1011 * есть метод getIdentifier.Вы можете сделать что-то вроде этого:

getResources().getIdentifier("blue_1", "drawable", "com.my.package.here")

Это вернет идентификатор ресурса, который вы затем сможете использовать вместо R.drawable.blue_1.

...