2014-01-19 2 views
1

단추 크기가 화면 크기에 따라 달라 지므로 버튼 클래스를 만들었습니다. 그것이 내가해야 할 말은 드로어 블 크기에 따라 변경되지 않도록 내가 높이와 너비를 해결할 수있는 방법을 내가내 단추 클래스로 단추의 너비를 고정하는 방법

<pachagename.MyButtons 
     android:id="@+id/access" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"  
     android:background="@drawable/aw" 
     android:layout_marginRight="10dp" 
     /> 

import android.content.Context; 
import android.util.AttributeSet; 
import android.util.DisplayMetrics; 
import android.util.Log; 
import android.view.WindowManager; 
import android.widget.Button; 

public class MyButtons extends Button { 

     public MyButtons(Context context, AttributeSet attrs) { 
      super(context, attrs); 
      DisplayMetrics displaymetrics = new DisplayMetrics(); 
      WindowManager windowManager = (WindowManager) context 
        .getSystemService(Context.WINDOW_SERVICE); 
      windowManager.getDefaultDisplay().getMetrics(displaymetrics); 
      int height = displaymetrics.heightPixels; 
      int width = displaymetrics.widthPixels; 

      setHeight(height/8); 
      setWidth(width/6); 

      Log.d("btheight",height*1/8+"");  

     } 


} 

는 XML filde의 : 그래서 여기 내 코드입니다 그것은 mybuttons 클래스에 추가 된 것으로 ... 하지만 이제는 wrap_content이기 때문에 drawable 크기에 따라 여전히 변경됩니다. Mybuttins 클래스에서 지정한 너비와 높이를 사용하도록 알려주려면 어떻게해야합니까?

내 레이아웃은 다음과 같습니다

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    tools:context=".MainActivity" 
    android:background="@drawable/app_cover" 

    > 

    <LinearLayout 
     android:id="@+id/L1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/L2" 
     android:layout_centerHorizontal="true" 
     >  
     <packagename.MyButtons 
     android:id="@+id/access_awkat" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"  
     android:background="@drawable/awkat" 
     android:layout_marginRight="10dp" 
     /> 

    <packagename.MyButtons 
     android:id="@+id/access_mofadala" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"  
     android:background="@drawable/mofadala" 
     android:layout_marginRight="10dp" 
     />  

    <packagename.MyButtons 
     android:id="@+id/access_introduction" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"   
     android:background="@drawable/mokadima" 
     /> 
     </LinearLayout> 

<LinearLayout 
     android:id="@+id/L2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="1dp" 

     > 

    <packagename.MyButtons 
     android:id="@+id/about_program" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/bernamej" 
     android:layout_marginRight="10dp" 
     /> 

    <packagename.MyButtons 
     android:id="@+id/user_settings" 
    android:layout_width="wrap_content" 
     android:layout_height="wrap_content"    
     android:background="@drawable/edadat" 
     android:layout_marginRight="10dp" 
     /> 
    <packagename.MyButtons 
     android:id="@+id/access_remembrances" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"   
     android:background="@drawable/azkar" 

     /> 



    </LinearLayout> 

</RelativeLayout> 
당신은 당신의 활동의) (하지 OnCreate이 코드를 넣어 바닥있는 LinearLayout의 높이와 너비를 설정할 수 있습니다
+0

왜 사용자 정의보기에서 정확히 이것을 수행 하시겠습니까? 그리고 왜 버튼을 높이의 1/8로, 모든 장치의 화면 너비의 1/6로 만들고 싶습니까? – fifarunnerr

+0

여기 너비와 높이를 설정하기위한 버튼을 사용자 정의 할 필요가 없습니다. 당신은 버튼의 LayoutParams를 통해 그것을 할 수 있습니다 ... –

답변

1

:

DisplayMetrics displaymetrics = new DisplayMetrics(); 
WindowManager windowManager = (WindowManager) context 
       .getSystemService(Context.WINDOW_SERVICE); 
windowManager.getDefaultDisplay().getMetrics(displaymetrics); 
int height = displaymetrics.heightPixels; 
int width = displaymetrics.widthPixels; 

View view = findViewById(R.id.L2); 
ViewGroup.LayoutParams params = view.getLayoutParams(); 
params.height = height/8; 
params.width = width/6; 
view.setLayoutParams(params); 

변경해야합니다 해당 레이아웃의 모든 버튼의 layout_height를 "fill_parent"로 설정하면 화면 높이의 1/8이되어야합니다.

+0

나는 특정 이미지가 있고 그 이미지의 buttom에있는 버튼을 원하고 buttom에는 1/8의 여유 공간이 있으므로 여기에 이미지가 포함되어 있습니다. 내 버튼을 표시하고 싶습니다. 그게 내가하고있는 일입니다. –

+2

RelativeLayout을 사용하고 LayoutParams를 사용하지 않고 커스텀 MyButtons 클래스없이 모든 작업을 수행 할 수 있습니다. 아마도 하나만 사용한다면 layout.xml을 게시해야합니다. – MikeHelland

+0

괜찮습니다. 내 버튼이 들어있는 상대 레이아웃을 배치했습니다. 내 스크린의 1/8에 어떻게 버튼을 맞출 수 있는지 알려주시겠습니까? –

관련 문제