Трудно точно сказать, что вы хотите, но звучит так, как будто вы просите о двух разных вещах, которые (как правило) невозможны только с одним макетом. Исходя из того, что я интерпретирую, вы говорите, что я хочу, чтобы кнопка была такого же размера, как изображение, а затем говорите, что я не хочу, чтобы кнопка была такого же размера, как изображение (когда ее тоже большая).
Мое предложение состоит в том, чтобы включить способ расшифровки, какой стиль макета вы хотите. Возможно, это путем проверки размера изображения по сравнению с текущим размером экрана. Затем примените тип параметров, которые будут работать для этого конкретного макета.
Установить два одинаковых размера легко с помощью параметра XML android:layout_weight
, и вы уже знакомы с wrap_content
для использования с большим изображением. Хотя вы можете использовать эти два параметра вместе, вы не получите желаемого во всех случаях (опять же, при условии, что я понимаю ваш пост). Вам понадобится один макет с использованием весов, чтобы сделать представления одинакового размера, а другой с использованием wrap_content, чтобы учесть разные размеры.
Кроме того, просто примечание, я бы действительно рекомендовал использовать XML для макетов, если нет ничего конкретного, чего вы не можете достичь с помощью XML.
Редактировать: Вот пример для вас.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button_1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="short" />
<Button
android:id="@+id/button_2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="medium" />
<Button
android:id="@+id/button_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="loooooooooong" />
</LinearLayout>