2016-08-03 4 views
1

3 개의 버튼이있는 LinearLayour 만 포함 된 레이아웃이 있습니다.사각형 버튼 화면 너비와 무게 일치

"weigth = 1"을 사용 했으므로이 3 개의 버튼이 수직으로 채워지지만 단추의 사각형이 넓어 지도록해야합니다. 즉, 너비가 높이와 같아야합니다.

어떻게해야합니까?

여기

<?xml version="1.0" encoding="utf-8"?> 

<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" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="android.jose.se.Prueba" 
    android:background="@drawable/bg" 
    android:gravity="center"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center" 
     android:orientation="vertical"> 

    <Button 
     android:id="@+id/bHet" 
     android:layout_marginTop="10dp" 
     android:layout_marginBottom="10dp" 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:background="@drawable/layer1" 
     android:onClick="cambiarBoton"/> 

    <Button 
     android:id="@+id/bGay" 
     android:layout_marginTop="10dp" 
     android:layout_marginBottom="10dp" 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:background="@drawable/layer2" 
     android:onClick="cambiarBoton"/> 

    <Button 
     android:id="@+id/bLesbi" 
     android:layout_marginTop="10dp" 
     android:layout_marginBottom="10dp" 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:background="@drawable/layer3" 
     android:onClick="cambiarBoton"/> 

</LinearLayout> 
나는 비슷한 문제를 가지고 당신이보기 화면 비율을 관리하는 데 도움이 Google's Percent Relative Layout를 사용하여 수행하면 모든

+0

세로 또는 가로로 채우시겠습니까? – faranjit

+0

이 도움이 될 수 있습니다 : http://stackoverflow.com/questions/4656986/how-do-i-keep-the-aspect-ratio-on-image-buttons-in-android – Bill

+0

세로로, 나는 이미 그것을 수정했습니다. – JOSEMAFUEN

답변

0

가장 좋은 방법처럼 사용할 수 있습니다, 광장 버튼라는 새로운 클래스를 만드는 것입니다,이 클래스는 버튼을 확장해야합니다. 그런 다음이 수업의 onMeasure에서 heightSpec을 WidthSpec으로 설정하면됩니다.

public class SquareButton extends Button { 

public SquareButton(Context context) { 
    super(context); 
} 

public SquareButton(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public SquareButton(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
} 

@Override 
protected void onMeasure(int WidthSpec, int HeightSpec){ 
    int newWidthSpec = HeightSpec ; 

    super.onMeasure(newWidthSpec, HeightSpec); 
}} 

이제이 xml의 일반 Button 대신 SquareButton을 사용할 수 있습니다. android : width 속성의 값은 무시됩니다.

<com.example.package.SquareButton 
    android:height = "0dp" 
    android:weight = "1" 
    android:width = "0dp" 
/> 
2

감사 .xml 파일을합니다.

당신은이 작업을 수행하는이

<android.support.percent.PercentRelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    <Button 
     android:layout_width="match_parent" 
     app:layout_aspectRatio="100%"/> 
</android.support.percent.PercentFrameLayout> 
+0

나는 그것을 시도했지만 "레이아웃 높이 속성을 정의해야합니다"라고 말합니다. – JOSEMAFUEN

+0

그 오류를 무시하면 효과가 있습니다. 빌드하고 시도하십시오. 제 생각에는 보푸라기입니다. –

+0

"layout_ *"속성은 레이아웃 전용입니다. 따라서이 경우처럼 레이아웃에 "layout_height"가 전혀 필요하지 않을 수 있습니다. –