2017-06-06 283 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