Android,防止ImageButton拉伸TableLayout

Android, prevent ImageButton from stretching TableLayout

因此,我正在尝试在左下角制作一个带有 ImageButton 的自定义键盘,但是图像拒绝按比例缩小,就像我使用 wrap_content 一样。 wrap_content 属性 从未使用过。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@color/bgColor"
  android:weightSum="100">
  <LinearLayout
      android:orientation="vertical"
      android:minWidth="25px"
      android:minHeight="25px"
      android:layout_width="match_parent"
      android:layout_height="0dip"
      android:id="@+id/linearLayout1"
      android:background="@color/orange"
      android:layout_weight="10" />
  <LinearLayout
      android:orientation="vertical"
      android:minWidth="25px"
      android:minHeight="25px"
      android:layout_width="match_parent"
      android:layout_height="0dip"
      android:id="@+id/linearLayout2"
      android:layout_weight="80"
      android:weightSum="100">
      <LinearLayout
          android:orientation="vertical"
          android:minWidth="25px"
          android:minHeight="25px"
          android:layout_width="match_parent"
          android:layout_height="0dip"
          android:layout_weight="40"
          android:id="@+id/linearLayout4"
          android:weightSum="100">
          <LinearLayout
              android:orientation="vertical"
              android:minWidth="25px"
              android:minHeight="25px"
              android:layout_width="match_parent"
              android:layout_height="0dp"
              android:id="@+id/linearLayout6"
              android:layout_weight="15" />
          <LinearLayout
              android:orientation="vertical"
              android:minWidth="25px"
              android:minHeight="25px"
              android:layout_width="match_parent"
              android:layout_height="0dp"
              android:id="@+id/linearLayout7"
              android:layout_weight="70"
              android:weightSum="100">
              <LinearLayout
                  android:orientation="horizontal"
                  android:layout_width="match_parent"
                  android:layout_height="0dp"
                  android:id="@+id/linearLayout9"
                  android:layout_weight="45"
                  android:weightSum="100">
                  <ImageView
                      android:src="@drawable/eurcurrency"
                      android:layout_width="0dp"
                      android:layout_height="match_parent"
                      android:id="@+id/imageView1"
                      android:layout_weight="30"
                      android:scaleType="fitEnd"
                      android:paddingRight="10dp"
                      android:paddingTop="5dp"
                      android:paddingBottom="5dp" />
                  <TextView
                      android:text="0"
                      android:layout_width="0dp"
                      android:layout_height="match_parent"
                      android:id="@+id/textView10"
                      android:layout_weight="70"
                      android:paddingRight="5dp"
                      android:paddingLeft="5dp"
                      android:textColor="@android:color/black"
                      android:gravity="center_vertical"
                      android:textSize="30sp" />
              </LinearLayout>
              <LinearLayout
                  android:orientation="vertical"
                  android:minWidth="25px"
                  android:minHeight="25px"
                  android:layout_width="match_parent"
                  android:layout_height="0dp"
                  android:id="@+id/linearLayout10"
                  android:layout_weight="10" />
              <LinearLayout
                  android:orientation="horizontal"
                  android:layout_width="match_parent"
                  android:layout_height="0dp"
                  android:id="@+id/linearLayout9"
                  android:layout_weight="45"
                  android:weightSum="100">
                  <ImageView
                      android:src="@drawable/btccurrency"
                      android:layout_width="0dp"
                      android:layout_height="match_parent"
                      android:id="@+id/imageView1"
                      android:layout_weight="30"
                      android:scaleType="fitEnd"
                      android:paddingRight="10dp"
                      android:paddingTop="5dp"
                      android:paddingBottom="5dp" />
                  <TextView
                      android:text="0"
                      android:layout_width="0dp"
                      android:layout_height="match_parent"
                      android:id="@+id/textView10"
                      android:layout_weight="70"
                      android:paddingRight="5dp"
                      android:paddingLeft="5dp"
                      android:textColor="@android:color/black"
                      android:gravity="center_vertical"
                      android:textSize="30sp" />
              </LinearLayout>
          </LinearLayout>
          <LinearLayout
              android:orientation="vertical"
              android:minWidth="25px"
              android:minHeight="25px"
              android:layout_width="match_parent"
              android:id="@+id/linearLayout8"
              android:layout_height="0dp"
              android:layout_weight="15" />
      </LinearLayout>
      <LinearLayout
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:id="@+id/linearLayout5"
          android:layout_weight="60"
          android:weightSum="100"
          android:minWidth="25px"
          android:minHeight="25px"
          android:background="@color/orange">
          <TableLayout
              android:id="@+id/tableLayout1"
              android:style="@style/CalculatorTable"
              android:minWidth="25px"
              android:minHeight="25px">
              <TableRow
                  android:id="@+id/tableRow1"
                  android:style="@style/CalculatorRow">
                  <Button
                      android:text="1"
                      android:layout_column="0"
                      android:id="@+id/button2"
                      android:style="@style/CalculatorButton" />
                  <Button
                      android:text="2"
                      android:layout_column="1"
                      android:id="@+id/button6"
                      android:style="@style/CalculatorButton" />
                  <Button
                      android:text="3"
                      android:layout_column="2"
                      android:id="@+id/button3"
                      android:style="@style/CalculatorButton" />
              </TableRow>
              <TableRow
                  android:id="@+id/tableRow2"
                  android:style="@style/CalculatorRow">
                  <Button
                      android:text="4"
                      android:layout_column="0"
                      android:id="@+id/button4"
                      android:style="@style/CalculatorButton" />
                  <Button
                      android:text="5"
                      android:layout_column="1"
                      android:id="@+id/button7"
                      android:style="@style/CalculatorButton" />
                  <Button
                      android:text="6"
                      android:layout_column="2"
                      android:id="@+id/button5"
                      android:style="@style/CalculatorButton" />
              </TableRow>
              <TableRow
                  android:id="@+id/tableRow3"
                  android:style="@style/CalculatorRow">
                  <Button
                      android:text="7"
                      android:layout_column="0"
                      android:id="@+id/button8"
                      android:style="@style/CalculatorButton" />
                  <Button
                      android:text="8"
                      android:layout_column="1"
                      android:id="@+id/button9"
                      android:style="@style/CalculatorButton" />
                  <Button
                      android:text="9"
                      android:layout_column="2"
                      android:id="@+id/button10"
                      android:style="@style/CalculatorButton" />
              </TableRow>
              <TableRow
                  android:id="@+id/tableRow4"
                  android:style="@style/CalculatorRow"
                  android:orientation="horizontal">
                  <Button
                      android:text="00"
                      android:layout_column="0"
                      android:id="@+id/button11"
                      android:style="@style/CalculatorButton" />
                  <Button
                      android:text="0"
                      android:layout_column="1"
                      android:id="@+id/button12"
                      android:style="@style/CalculatorButton" />
                  <ImageButton
                      android:layout_column="2"
                      android:id="@+id/imageButton1"
                      android:style="@style/CalculatorButton"
                      android:src="@drawable/bitcoineuroswap"
                      android:scaleType="fitCenter" />
              </TableRow>
          </TableLayout>
      </LinearLayout>
  </LinearLayout>
  <LinearLayout
      android:orientation="vertical"
      android:minWidth="25px"
      android:minHeight="25px"
      android:layout_width="match_parent"
      android:id="@+id/linearLayout3"
      android:background="@color/orange"
      android:layout_weight="10" />
  </LinearLayout>

我的风格:

<resources>
  <style name="CalculatorButton" >
    <item name="android:layout_width" >0dp</item>
    <item name="android:layout_weight" >33</item>
    <item name="android:layout_height" >fill_parent</item>
    <item name="android:background">@drawable/CalculatorButtonBackground</item>
  </style>

  <style name ="CalculatorRow">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_weight">25</item>
    <item name="android:layout_height">0dip</item>
    <item name="android:weightSum">99</item>
    <item name="android:gravity">fill_vertical</item>
    <item name="android:divider">@drawable/CalculatorDivider</item>
    <item name="android:dividerPadding">0dp</item>
    <item name="android:showDividers">middle</item>
  </style>

  <style name ="CalculatorTable">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:weightSum">100</item>
    <item name="android:divider">@drawable/CalculatorDivider</item>
    <item name="android:dividerPadding">0dp</item>
    <item name="android:showDividers">middle</item>
    <item name="android:background">@drawable/CalculatorTableBackground</item>
    <item name="android:layout_margin">1dp</item>
  </style>
</resources>

输出(我想要的 - 在左边,我已经得到的 - 在右边):

建议:要设计一个键盘,你可以很好地使用Linearlayout 并为weightsum 和weight 属性设置适当的值。

将您的图片按钮包裹在这样的布局中

 <RelativeLayout android:style="@style/CalculatorButton">
                        <ImageButton
                            android:id="@+id/imageButton1"
                            android:layout_centerInParent="true"
                            android:layout_width="20dp"
                            android:layout_height="20dp"
                            android:layout_column="2"
                            android:scaleType="fitCenter"
                            android:src="@drawable/hj" />
                    </RelativeLayout>

将考虑图像的原始高度。所以最好给出图片的宽高。

我自己想出了一个问题。 TableRow 元素无法压缩内部元素。所以答案是 - 用 LinearLayot.

替换 TableRow 元素