изменение размера предупреждений - PullRequest
0 голосов
/ 28 января 2012

Вечер,

Я наткнулся на этот очень полезный пост, и у меня все выглядит хорошо, кроме размеров ... Сообщение: как добавить значок в диалоге оповещения перед каждым элементом?

Был комментарий о setBounds и затем вызвал другой setCompoundDrawables.

Вот что у меня есть

...
switch(currently_selected){
...
    case 3:

                final Item[] items2 = {
                    new Item("Company 1", R.drawable.c_1),
                    new Item("Company 2", R.drawable.c_2),
                    new Item("Company 3", R.drawable.c_3),
                    new Item("Company 4", R.drawable.c_4),
                    new Item("Company 5", R.drawable.c_5)//no icon for this one
                };

                ListAdapter adapter = new ArrayAdapter<Item>(
                                                MainPortal.this,
                                                android.R.layout.select_dialog_item,
                                                android.R.id.text1,
                                                items2){
                        public View getView(int position, View convertView, ViewGroup parent) {
                            //User super class to create the View
                            View v = super.getView(position, convertView, parent);
                            TextView tv = (TextView)v.findViewById(android.R.id.text1);

                            //Put the image on the TextView

                            tv.setCompoundDrawablesWithIntrinsicBounds(items2[position].icon, 0, 0, 0);

                            //Add margin between image and text (support various screen densities)
                            int dp5 = (int) (5 * getResources().getDisplayMetrics().density + 0.5f);
                            tv.setCompoundDrawablePadding(dp5);

                            return v;
                        }
                    };

                AlertDialog.Builder builder1 = new AlertDialog.Builder(MainPortal.this);
                builder1.setTitle("Please select the Module you wish to load and use");
                builder1.setAdapter(adapter, new DialogInterface.OnClickListener() {
                //builder1.setItems(items1, new DialogInterface.OnClickListener() { // comment out this line to try to use the adapter
                    public void onClick(DialogInterface dialog, int item) {
                        Toast.makeText(getApplicationContext(), items1[item], Toast.LENGTH_LONG).show();
                    }
                }).create().show();

                break;
...
}//end switch

так что это работает очень хорошо, и через 5-6 часов я заработал.

Хотя я слишком новичок в этом, чтобы понять, что это за вещи. Моя компания 1-5, будет иметь возможность загрузить заголовок компании для отображения рядом с именем.

Я бы хотел уменьшить их, сохранив их пропорции, если это возможно. Таким образом,

int max_allowed = 50;
if(getWidth() > getHeight){
    scaleTo(50, (getWidth()/getHeight()*50));
}else if(getWidth() < getHeight){
    scaleTo((getWidth()/getHeight()*50), 50) ;
}else{
    scaleTo(50, 50);
}

Буду очень признателен за любую помощь в поиске правильного способа определения границ, я просто не понимаю, что items2 [position] .icon является целым числом и ссылается на него или преобразует его из рисованного элемента.

спасибо, Joshua

1 Ответ

0 голосов
/ 29 января 2012

Мне удалось найти ответ после немалых копаний.

Требуются следующие изменения для изменения размера. После чего достаточно простого утверждения, чтобы настроить размеры баннеров компании

final Drawable image;
Resources res = getResources();
image = res.getDrawable(items2[position].icon);
image.setBounds(0, 0, 50, 50);
tv.setCompoundDrawables(image, null, null, null);

//tv.setCompoundDrawablesWithIntrinsicBounds(image,0,0,0);//items2[position].icon, 0, 0, 0);
...