2017-06-06 124 views
2

因此,我试图在左下角制作一个带有ImageButton的自定义键盘,但是图像拒绝缩小,就像我使用wrap_content一样。 wrap_content属性从不使用。Android,防止ImageButton拉伸TableLayout

<?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> 

输出(I想要的东西 - 在左边,我已经得到了 - 在右侧): enter image description here

回答

0

我已经想出了一个我自己的问题。 TableRow元素无法收缩内部元素。所以答案是 - 用LinearLayot代替TableRow元素。

1

建议:要设计的键盘,你可以很好地使用Linearlayout和权重和重量属性的适当值。

包装你的图像按钮的布局里面像这样

<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> 

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

+0

我真的不认为,移动到LinearLayout将有所帮助。我认为'ImageButton'本身存在问题。是的,我试图把它放在另一个布局(如Row-> LinearLayout-> ImageButton) – user7803907

+0

尝试我编辑的答案 – Divya