-1

FrameLayout의 가로 세로 비율을 프로그래밍 방식으로 PercentRelativeLayout에 설정하고 싶습니다.프로그래밍 방식으로 PercentageRelativeLayout의 가로 세로 비율을 설정하십시오.

<android.support.percent.PercentRelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:background="#000" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <FrameLayout 
     app:layout_widthPercent="100%" 
     app:layout_aspectRatio="178%" //aspect ratio 
     android:orientation="vertical" 
     android:id="@+id/liveTV_frame" 
     android:layout_marginBottom="50dp" 
     android:layout_centerInParent="true" 
     android:background="@android:color/background_dark" 
     android:keepScreenOn="true"> 
    </FrameLayout> 
</android.support.percent.PercentRelativeLayout> 

하지만 프로그래밍 방식으로 설정해야합니다

이미 xml에서 재판을

, 그것은 일하고있어.

어떻게하면됩니까? 분수를 사용하지 않고 그냥 내 대답을 정교하게 @azizbekian 대답에서

+0

[this] (http://stackoverflow.com/questions/32292656/percentrelativelayout-how-to-set-the-height-programatically)이 솔루션을 얻는 데 도움이 될 수 있습니다! –

+0

@ 조이 하드, 당신의 cmts을 주셔서 감사합니다. 하지만 가로 세로 비율을 높이로 설정해야합니다. –

+3

아무 이유없이 사람들이 왜이 질문에 대해 하향 파문을하는지. –

답변

3
PercentRelativeLayout layout = ...; 
PercentRelativeLayout.LayoutParams layoutParams 
      = (PercentRelativeLayout.LayoutParams) layout.getLayoutParams(); 
layoutParams.getPercentLayoutInfo().aspectRatio = ...; // float value 
layout.requestLayout(); 
+0

답변 해 주셔서 감사합니다. 하지만 float 값은 무엇입니까? 나는 플로트로 178 %를 설정해야합니다. –

+0

값이 [소스에서] 어떻게 계산되는지 볼 수 있습니다 (https://github.com/android/platform_frameworks_support/blob/master/percent/src/android/support/percent/PercentLayoutHelper.java#L234). – azizbekian

+0

감사합니다. @azizbekian, 이제 제대로 작동합니다. –

0

,

, 비율의 설정 float 값 :

<item name="aspect_ratio" type="fraction">178%</item> 
: 당신은 그래서 XML에서 분수를 지정

PercentRelativeLayout.LayoutParams params = (PercentRelativeLayout.LayoutParams) mFlPromoVideoContainer.getLayoutParams(); 
     PercentLayoutHelper.PercentLayoutInfo info = params.getPercentLayoutInfo(); 
     info.widthPercent = 1f; 
     info.aspectRatio = 1.78f;//178% 
     mFlPromoVideoContainer.requestLayout(); 

Java의 경우

PercentRelativeLayout.LayoutParams params = (PercentRelativeLayout.LayoutParams) mFlPromoVideoContainer.getLayoutParams(); 
     PercentLayoutHelper.PercentLayoutInfo info = params.getPercentLayoutInfo(); 
     info.widthPercent = 1f; 
     info.aspectRatio = getResources().getFraction(R.fraction.aspect_ratio, 1, 1); 
     mFlPromoVideoContainer.requestLayout();