2014-01-04 6 views
1

У меня есть настройка TableLayout и добавлена ​​строка для включения кнопки и ImageView. ImageView - это просто цветовая точка. Я использовал стиль в прошлом с RelativeLayout и позиционировал изображение кнопки ImageView выше. Новое приложение, над которым я работаю, использует TableLayout, но когда я пытаюсь настроить кнопку с ImageView, это не позволит позиционировать. Этот параметр недоступен для TableLayout?Вид изображения над кнопкой в ​​tablelayout

<TableLayout 
    android:id="@+id/TB1" 
    android:layout_width="250dp" 
    android:layout_height="match_parent" 
    android:layout_weight="1" > 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 

     <Button 
      android:id="@+id/Scene1" 
      android:layout_width="100dp" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="10dp" 
      android:layout_marginTop="10dp" 
      android:layout_weight="1" 
      android:background="@drawable/custom_scene_buttons" 
      android:text="Scene 1" 
      android:textColor="@drawable/white" 
      android:textSize="20sp" /> 

     <ImageView 
      android:id="@+id/colordot1" 
      android:layout_width="21dp" 
      android:layout_height="21dp" 
      android:background="@drawable/circle" /> 
    </TableRow> 

Это код, который необходимо изменить.

   Resources res = getResources(); 
     final Drawable drawable = res.getDrawable(R.drawable.circle); 
     drawable.setColorFilter(Color.rgb(i, j, k), Mode.SRC_ATOP); 
     ImageView img = (ImageView) findViewById(R.id.colordot1); 
     img.setBackgroundDrawable(drawable); 

Вот линейный вариант компоновки Я попытался

   <LinearLayout android:orientation="vertical" > 

      <Button 
       android:id="@+id/Scene1" 
       android:layout_width="100dp" 
       android:layout_height="match_parent" 
       android:layout_marginLeft="10dp" 
       android:layout_marginTop="10dp" 
       android:layout_weight="1" 
       android:background="@drawable/custom_scene_buttons" 
       android:drawableRight="@drawable/circle" 
       android:text="Scene 1" 
       android:textColor="@drawable/white" 
       android:textSize="20sp" /> 

      <ImageView 
       android:id="@+id/colordot1" 
       android:layout_width="21dp" 
       android:layout_height="21dp" 
       android:layout_marginLeft="10dp" 
       android:layout_marginTop="10dp" 
       android:background="@drawable/circle" /> 
     </LinearLayout> 

enter image description here

ответ

0

EDIT: Включая весь TableLayout. Я получил это, чтобы работать, используя drawableRight. Вы можете изменить круг программно, захватив кнопку и изменив ее возможность рисования. Here's a link describing this. Ниже приведен скриншот TableLayout, который я тестировал.

TableLayout

<TableLayout 
    android:id="@+id/TB1" 
    android:layout_width="250dp" 
    android:layout_height="match_parent" 
    android:layout_weight="1" > 

<TableRow 
    android:id="@+id/tableRow1" > 

    <Button 
     android:id="@+id/Scene1" 
     android:layout_width="50dp" 
     android:layout_height="100dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="10dp" 
     android:layout_weight="1" 
     android:background="@color/blue" 
     android:drawableRight="@drawable/circle" 
     android:text="Scene 1" 
     android:textColor="@color/white" 
     android:textSize="20sp" /> 

    <Button 
     android:id="@+id/Scene2" 
     android:layout_width="50dp" 
     android:layout_height="100dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="10dp" 
     android:layout_weight="1" 
     android:background="@color/blue" 
     android:drawableRight="@drawable/circle" 
     android:text="Scene 2" 
     android:textColor="@color/white" 
     android:textSize="20sp" /> 

</TableRow> 

<TableRow 
    android:id="@+id/tableRow2" > 

    <Button 
     android:id="@+id/Scene3" 
     android:layout_width="50dp" 
     android:layout_height="100dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="10dp" 
     android:layout_weight="1" 
     android:background="@color/blue" 
     android:drawableRight="@drawable/circle" 
     android:text="Scene 3" 
     android:textColor="@color/white" 
     android:textSize="20sp" /> 

    <Button 
     android:id="@+id/Scene4" 
     android:layout_width="50dp" 
     android:layout_height="100dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="10dp" 
     android:layout_weight="1" 
     android:background="@color/blue" 
     android:drawableRight="@drawable/circle" 
     android:text="Scene 4" 
     android:textColor="@color/white" 
     android:textSize="20sp" /> 

</TableRow> 

</TableLayout> 

Этот вопрос при использовании TableLayout, ребенок каждый TableRow является столбец. Таким образом, ваша кнопка и ImageView относятся к разным столбцам. У вас есть другие строки в этом TableLayout? Ширина столбца определяется представлением с наибольшей шириной в этом столбце. Итак, если у вас есть другой TableRow, а его второй дочерний вид имеет ширину 100dp, это повлияет на ширину вашего второго столбца, то есть на ваш круг ImageView.

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

+0

Цвет точки не отображается после добавления андроида: drawableRight = "@ drawable/circle" Я также разместил код, который я использую, чтобы изменить цветную точку. У меня есть 10 из них на макете, могу ли я сделать переносимый для изменения? – Bobby

+0

Нечетный. Я думаю, вы можете альтернативно обернуть Button и ImageView в LinearLayout. Затем LinearLayout будет единственным дочерним элементом и столбцом TableRow. –

+0

Линейная компоновка не даст мне возможность располагать точку поверх кнопки только рядом с ней. Спасибо за предложение. – Bobby

Смежные вопросы