2015-02-19 2 views
0

Я видел много способов выравнивания текстового изображения с изображением, но я не нашел, как сделать, когда текст больше, чем изображение, и когда вы хотите, чтобы текст занимает весь родительский макет. Моя раскладка такова:Выравнивание imageView и textView (и переполнение текста с рамкой)

<RelativeLayout 
    android:id="@+id/accordion_toogle" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:visibility="gone"> 
    <ImageView 
     android:id="@+id/accordion_image" 
     android:layout_width="@dimen/accor_img_wid" 
     android:layout_height="@dimen/accor_img_hei" /> 

    <TextView 
     android:id="@+id/accordion_msg" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@+id/accordion_image" 
     android:paddingLeft="5dp"/> 
</RelativeLayout> 

В этом случае, при условии, что изображение занимает половину RelativeLayout, то accordion_msg продолжает занимать половину RelativeLayout раза финиша ImageView.

Вы меня понимаете ?? Я хорошо выразился? Любое предложение??

спасибо.

EDIT Изображение помочь то, что я пытаюсь сделать: the desired design

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

EDIT 2

Я пытаюсь что говорит @Elltz ... но я не могу сделать то, что я хочу, у меня есть этот код:

draw.setBounds(0, 0, width, height); //width: 128 height: 172 in this case 
textview.setCompoundDrawablesRelative(draw, null, null, null); 

Но изображение не показывается, я стараюсь другие много вещей, например:

textview.setCompoundDrawablesRelative(null, draw, null, null); 

И изображение остается в верхней части текста. Другое Diferent это я попытался было:

textview.setCompoundDrawables(draw, null, null, null); 

И образ находится на левой стороне ... но вертикальное выравнивание по центру, а верхние и нижние части изображений не являются пустыми (без текста, нет фото ... нет ничего). Я пытаюсь изменить родителя на LinearLayout, используя гравитационный левый, гравитационный верх, RelativeLayout ...

Oooppsss !!! теперь макет таков:

<RelativeLayout 
    android:id="@+id/accordion_toogle" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:visibility="gone"> 
    <TextView 
     android:id="@+id/accordion_msg" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@+id/accordion_image" 
     android:paddingLeft="5dp"/> 
</RelativeLayout> 

* Видимость у родителя не важна, я меняю ее программно.

спасибо.

+1

Я боюсь, что это сбивает с толку. Если бы вы могли добавить изображения того, что вы получаете, и что вы хотите, это поможет совсем немного. – codeMagic

+0

Я сам должен иметь такой контроль. Вместо этого я предпочитаю использовать LinearLayouts и устанавливать свойство Gravity на родительский макет, чтобы дети соответствовали. –

ответ

0

Хорошо ... после тяжелой работы экспериментирования, searching-> attempting-> failing-> searching-> attempting-> failing-> searching-> attempting-> успех;) В this stack question @K_Anas дает решение ... Я буду вводить то, что я делаю для следующего случая в этой ситуации (Кроме того, возможно обработать ссылку на текст, разрешить ее с помощью Html.fromHtml и сохранить свойство ссылки после SpannableString):

Layout

<RelativeLayout 
    android:id="@+id/accordion_toogle" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="6dp" 
    android:visibility="gone" 
    android:gravity="top"> 

    <ImageView 
     android:id="@+id/accordion_image" 
     android:layout_width="@dimen/img_width" 
     android:layout_height="@dimen/img_height" 
     android:src="@drawable/default_image"/> 
    <TextView 
     android:id="@+id/accordion_msg" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingLeft="5dp"/> 
</RelativeLayout> 

код Java

final TextView msgView = (TextView)view_aux.findViewById(R.id.accordion_msg); 
String msg_text = dbStructure.getMsg(); 
if(msg_text.contains("href=\"")) { 
    String[] msg_aux = msg_text.split("href=\""); 
    if (!msg_aux[1].toLowerCase().startsWith("http")) 
     msg_aux[1] = "http://" + msg_aux[1]; 
    msg_text = msg_aux[0] + "\"href=\"" + msg_aux[1]; 
} 

msgView.setText(Html.fromHtml(msg_text)); 
msgView.setMovementMethod(LinkMovementMethod.getInstance()); 

int lines = (int)Math.round(height/msgView.getLineHeight()); 
SpannableString ss = new SpannableString(msgView.getText()); 
ss.setSpan(new MyLeadingMarginSpan2(lines, width+10), 0, ss.length(), 0); 

msgView.setText(ss); 

В этом случае ширина и высота являются педоставлением по ImageView.