2014-12-07 45 views
10

sáng tạo mới cho android, đang tạo máy tính trong studio android. máy tính của tôi hoạt động tốt nhưng có vấn đề với bố cục của nó, tôi cài đặt nó trên máy tính bảng của tôi và nút nhỏ như tôi thiết kế chúng trong studio adroid trên trình giả lập, kích thước nút không thay đổi, vì vậy cần trợ giúp để kích thước nút tăng khi thay đổi kích thước màn hìnhcách điều chỉnh kích thước nút theo Kích thước màn hình trong Android Studio

thiết kế máy tính của tôi trong Android Studio

enter image description here

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:background="#ff000000"> 
    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/clear" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="110dp" 
     android:background="@drawable/clear_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/plus_minus" 
     android:layout_alignBottom="@+id/clear" 
     android:layout_toRightOf="@+id/clear" 
     android:layout_toEndOf="@+id/clear" 
     android:layout_marginLeft="-11dp" 
     android:background="@drawable/pm_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/per" 
     android:layout_alignBottom="@+id/plus_minus" 
     android:layout_toRightOf="@+id/plus_minus" 
     android:layout_toEndOf="@+id/plus_minus" 
     android:layout_marginLeft="-11dp" 
     android:background="@drawable/per_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/div" 
     android:layout_alignTop="@+id/per" 
     android:layout_toRightOf="@+id/per" 
     android:layout_toEndOf="@+id/per" 
     android:layout_marginLeft="-11dp" 
     android:background="@drawable/div_btn" 
     android:layout_alignParentRight="false" /> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="70dp" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:id="@+id/disp" 
     android:layout_above="@+id/plus_minus" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:textColor="@android:color/white" 
     android:textSize="32sp" 
     android:inputType="none" 
     android:textStyle="normal" 
     android:gravity="right" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/seven" 
     android:layout_below="@+id/clear" 
     android:layout_toLeftOf="@+id/plus_minus" 
     android:layout_toStartOf="@+id/plus_minus" 
     android:layout_marginTop="-10dp" 
     android:layout_alignParentTop="false" 
     android:layout_alignParentLeft="true" 
     android:background="@drawable/seven_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/eight" 
     android:layout_alignTop="@+id/seven" 
     android:layout_alignLeft="@+id/plus_minus" 
     android:layout_alignStart="@+id/plus_minus" 
     android:background="@drawable/eight_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/nine" 
     android:layout_alignBottom="@+id/seven" 
     android:layout_alignLeft="@+id/per" 
     android:layout_alignStart="@+id/per" 
     android:background="@drawable/nine_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/mul" 
     android:layout_alignTop="@+id/nine" 
     android:layout_alignLeft="@+id/div" 
     android:layout_alignStart="@+id/div" 
     android:background="@drawable/mul_btn" /> 

    <Button 
     android:layout_width="103dp" 
     android:layout_height="90dp" 
     android:id="@+id/four" 
     android:layout_below="@+id/seven" 
     android:layout_alignRight="@+id/seven" 
     android:layout_alignEnd="@+id/seven" 
     android:layout_marginTop="-10dp" 
     android:layout_alignParentLeft="false" 
     android:background="@drawable/four_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/five" 
     android:layout_alignBottom="@+id/four" 
     android:layout_alignLeft="@+id/eight" 
     android:layout_alignStart="@+id/eight" 
     android:background="@drawable/five_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/six" 
     android:layout_alignTop="@+id/five" 
     android:layout_alignLeft="@+id/nine" 
     android:layout_alignStart="@+id/nine" 
     android:background="@drawable/six_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/sub" 
     android:layout_toEndOf="@+id/nine" 
     android:layout_alignTop="@+id/six" 
     android:layout_alignLeft="@+id/mul" 
     android:layout_alignStart="@+id/mul" 
     android:background="@drawable/min_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/one" 
     android:layout_below="@+id/four" 
     android:layout_alignLeft="@+id/four" 
     android:layout_alignStart="@+id/four" 
     android:layout_marginTop="-10dp" 
     android:layout_alignParentLeft="false" 
     android:background="@drawable/one_btn" /> 

    <Button 
     android:layout_width="203dp" 
     android:layout_height="90dp" 
     android:id="@+id/zero" 
     android:layout_below="@+id/one" 
     android:layout_alignLeft="@+id/one" 
     android:layout_alignStart="@+id/one" 
     android:layout_marginTop="-10dp" 
     android:background="@drawable/zero_btn" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="-7dp" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/two" 
     android:layout_above="@+id/zero" 
     android:layout_alignLeft="@+id/five" 
     android:layout_alignStart="@+id/five" 
     android:background="@drawable/two_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/three" 
     android:layout_below="@+id/five" 
     android:layout_alignLeft="@+id/six" 
     android:layout_alignStart="@+id/six" 
     android:layout_marginTop="-10dp" 
     android:background="@drawable/three_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/add" 
     android:layout_toEndOf="@+id/three" 
     android:layout_below="@+id/six" 
     android:layout_alignLeft="@+id/sub" 
     android:layout_alignStart="@+id/sub" 
     android:layout_marginTop="-10dp" 
     android:background="@drawable/plus_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/dot" 
     android:layout_below="@+id/two" 
     android:layout_alignRight="@+id/three" 
     android:layout_alignEnd="@+id/three" 
     android:layout_marginTop="-10dp" 
     android:background="@drawable/dot_btn" /> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="90dp" 
     android:id="@+id/equ" 
     android:layout_toEndOf="@+id/dot" 
     android:layout_below="@+id/three" 
     android:layout_alignLeft="@+id/add" 
     android:layout_alignStart="@+id/add" 
     android:layout_marginTop="-10dp" 
     android:background="@drawable/equ_btn" /> 

</RelativeLayout> 
+0

nó không thay đổi vì bạn thiết lập chiều rộng và chiều cao với giá trị cố định. Thử sử dụng các trọng số – j4rey89

+1

Nếu bạn chỉ định chiều rộng 100dp, kết quả sẽ xuất hiện trên bất kỳ thiết bị nào có chiều rộng khoảng 0,6 inch/1,6 cm. Nếu tôi có máy tính bảng, tại sao tôi lại muốn các nút khổng lồ? Người ta không chỉ đơn giản là quy mô bố trí lên. – zapl

Trả lời

9

Bạn phải sử dụng layout_weight để đạt được những gì bạn muốn, và điều đó sẽ được sử dụng bởi gói mỗi hàng nút bên trong một LinearLayout và tất cả những gì LinearLayouts cộng với TextView sẽ được bao bọc bên trong một LinearLayout lớn thay vì RelativeLayout của bạn như sau:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/main_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#ff000000" 
    android:orientation="vertical" 
    android:weightSum="6" > 

    <TextView 
     android:id="@+id/disp" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:inputType="none" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="@android:color/white" 
     android:textSize="32sp" 
     android:textStyle="normal" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:orientation="horizontal" 
     android:weightSum="4" > 

     <Button 
      android:id="@+id/clear" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="4" 
      android:background="@drawable/clear_btn" /> 

     <!-- then the three remaining buttons --> 

     <LinearLayout /> 

     <!-- then the four remaining rows --> 


     <!-- in the last row the "0" button will have layout_weight="2" NOT "1" --> 
    </LinearLayout> 

</LinearLayout> 

UPDATE:

ImageButtons sử dụng thay vì Buttons cho khả năng mở rộng tốt hơn, và đây là cách bạn phải sử dụng nó:

<ImageButton 
      android:id="@+id/clear" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="4" 
      android:background="@android:color/transparent" 
      android:src="@drawable/clear_btn" 
      android:scaleType="fitCenter" /> 

    <!-- and so for all Buttons --> 

Lưu ý ở đây chúng tôi đã thay đổi:

1- layout_height: wrap_content-match_parent.

2- background: xóa drawable (clear_btn) và làm cho nó transparent.

và chúng tôi đã thêm:

1- src: gán cho nó những drawable (clear_btn).

2- scaleType: làm cho nó fitCenter để làm cho nó cân trong tất cả các khu vực có sẵn mà không làm hỏng tỷ lệ khả năng mở rộng hình ảnh.

P.S: trong trường hợp bạn muốn nút để thực hiện mọi thời tiết khu vực đó là khả năng mở rộng hay không, thay đổi scaleType từ fitCenter để fitXY (có thể bạn sẽ cần phải có cho các "" Button).

+1

Cảm ơn nó đã giúp rất nhiều :) – user889030

+0

@Muhammad Refaat tôi đã làm như bạn hướng dẫn tôi (http://s27.postimg.org/t3g0v1ukz/del_mr.png) nhưng bây giờ vấn đề như có rất nhiều khoảng cách giữa các nút theo chiều dọc và chiều ngang , vì vậy làm thế nào tôi có thể loại bỏ khoảng cách: ( – user889030

+0

@ user889030 vấn đề là bạn đang sử dụng 'Buttons' không phải' ImageButtons' sẽ cho bạn khả năng điều chỉnh quan điểm của bạn tốt hơn, Vì vậy, tôi khuyên bạn thay thế các nút bằng 'ImageButtons 'và tôi sẽ đăng một bản cập nhật chứa các thay đổi cần thiết cho các Nút. –

0

trong khi thiết lập chiều cao/chiều rộng của một nút trong android, sử dụng giá trị mật độ điểm ảnh cố định sẽ dẫn đến kích thước chính xác trên mọi màn hình. Sử dụng các giá trị độ rộng như wrap_content, fill_parent, trọng lượng, v.v. sẽ làm cho nút trông theo mật độ màn hình.

Hãy thử trải qua liên kết này một lần: - Best Practices for User Interface

0

Nếu bạn muốn hỗ trợ nhiều màn hình không bao giờ kéo, thả và thay đổi kích thước quan điểm bằng tay.

Bạn có thể kiểm tra cả android:layout_weight thuộc tính và LinearLayout

0

Giải pháp 1: vui lòng sử dụng dimens.xml để chỉ định và chiều cao cho các nút.

cho máy tính bảng, vui lòng tạo giá trị thư mục-sw600dp, giá trị-sw720dp và đặt tệp dimens.xml của bạn vào bên trong.

Giải pháp 2:

Use linearlayout and layout_weight property. 
Các vấn đề liên quan