我已经设置了一个TableLayout并添加了一行来包含一个按钮和一个ImageView。 ImageView只是一个彩色圆点。我在过去使用了RelativeLayout的样式,并将ImageView定位在上面的按钮图像上。我正在使用的新应用程序使用TableLayout,但是当我尝试使用ImageView设置按钮时,它将不允许定位。此选项不适用于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>
答案 0 :(得分:0)
编辑:包括整个TableLayout。我已经使用drawableRight工作了。您可以通过抓取Button并更改其drawable以编程方式更改圆。 Here's a link describing this。下面是我测试过的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。您还可以修改可绘制的填充。
<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:drawableRight="@drawable/circle"
android:textSize="20sp" />