回答
隨着引進ConstraintLayout你不用編寫任何代碼一個單一的線,或者使用第三方或依賴PercentFrameLayout
這是在26.0.0棄用。
下面是如何保持1中的例子:1寬高比使用ConstraintLayout
佈局:編輯XML文件
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
android:background="@android:color/black"
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</FrameLayout>
</android.support.constraint.ConstraintLayout>
或替代的,你可以直接在佈局編輯器編輯您的佈局:
你好@Eugene,無論何時我用它來捕捉視頻,寬度總是看起來有點有彈性,這可能是導致這種情況的原因。 –
請分享截圖。 –
https://meshileya.github.io/error.png那是截圖@Eugene 感謝您的回覆。 –
一套高度fill_parent
,寬度爲wrap_content
,你修復與android:adjustViewBounds="true"
AdjustViewBounds僅適用於ImageView,它約束了drawable的比率,而不是視圖的比率。 – Tim
所以你想讓佈局SQUARE? –
長寬比你可以嘗試最初設定layout_height
到wrap_content
。但從那裏我認爲你必須進入代碼。只是爲了實驗,在您的活動嘗試類似:
@Override
public void onResume(){
super.onResume();
findViewById(R.id.squareView).getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override public void onGlobalLayout() {
View squareView = findViewById(R.id.squareView);
LayoutParams layout = squareView.getLayoutParams();
layout.height = squareView.getWidth();
squareView.setLayoutParams(layout);
squareView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});
}
凡R.id.squareView
是有問題的視圖的id
。並且請注意,此代碼被封裝在onGlobalLayout
調用中以確保squareView.getWidth()
具有有意義的值。
LinearLayout ll = (LinearLayout)findViewById(R.id.LL);
int width = ll.getWidth();
LinearLayout.LayoutParams ll_params = new LinearLayout.LayoutParams(width, width);
ll.setLayoutParams(ll_params);
這或多或少都可以,但是它全部取決於調用它時的*。例如,如果您要將此代碼放在onCreate中,ll.getWidth()將返回0. – newbyca
在你的build.gradle地址:
compile 'com.android.support:percent:23.1.1'
,並在您layout.xml包裝任何視圖或ViewGroup中要遵循一個PercentFrameLayout其中裏面的比例:
android:layout_width="match_parent"
android:layout_height="wrap_content"
然後查看或的ViewGroup要遵循的比率替換機器人:layout_width和機器人:layout_height:
app:layout_aspectRatio="178%"
app:layout_widthPercent="100%"
和你有一個視圖或ViewGroup中,其中寬高比爲16:9(1.78:1)寬度匹配父母和高度相應地調整。
注意:刪除正常的寬度和高度屬性很重要。林特會抱怨,但它會工作。
我同意這裏所說的一切,除非要刪除您提到的正常寬度和高度屬性,這一點非常重要。我已經嘗試過了,但它不適合我。相反,我不得不將它們設置爲以下android:layout_width =「0dp」 android:layout_height =「0dp」如下所述:http://stackoverflow.com/questions/34931023/percentframelayout-you-must-supply-a- layout-width-attribute –
警告:只有容器寬度> =容器高度* 16/9時,這纔會起作用。例如,如果您的容器寬度爲1000dp,高度爲50dp,則您的孩子將適合寬度並且高度爲1000 * 9/16 = 562.5。 –
'PercentRelativeLayout'和'PercentFrameLayout'現在已被棄用,建議使用'ConstraintLayout'代替。 –
我爲類似用例創建了一個佈局庫。隨意使用它。
安裝
這個添加到文件的頂部
repositories {
maven {
url "http://dl.bintray.com/riteshakya037/maven"
}
}
dependencies {
compile 'com.ritesh:ratiolayout:1.0.0'
}
使用
定義在佈局上根視圖 '應用' 命名空間
xmlns:app="http://schemas.android.com/apk/res-auto"
包含該庫在佈局
<com.ritesh.ratiolayout.RatioRelativeLayout
android:id="@+id/activity_main_ratio_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:fixed_attribute="WIDTH" // Fix one side of the layout
app:horizontal_ratio="2" // ratio of 2:3
app:vertical_ratio="3">
- 1. 如何在matplotlib中設置縱橫比?
- 2. 基於縱橫比的Android佈局?
- 3. Android:爲佈局設置固定高度?
- 4. Android佈局如何設置特定的固定佈局高度
- 5. Sympy:設置縱橫比
- 6. 辮形預置「固定的:縱橫比」屬性爲選擇
- 7. 如何在橫向佈局中包含縱向佈局?
- 8. 如何在Android網格視圖中設置自定義縱橫比?
- 9. 如何使用Spyder爲Python中的繪圖設置縱橫比?
- 10. 如何以橫向適應縱向圖像在縱橫比保持縱橫比
- 11. 如何爲縱向和橫向定義不同的佈局?
- 12. 如何在單頁佈局中設置固定位置圖像
- 13. 縱橫比自定義列表視圖中的縱橫比
- 14. 設置三維圖的縱橫比
- 15. Android縱橫比列表?
- 16. 如何在android中設置此佈局?
- 17. 保持流體CSS網格佈局中元素的縱橫比
- 18. 如何使用自動佈局在兩個視圖之間設置空間(在縱橫比)
- 19. 如何使用自動佈局爲縱向和橫向定向配置不同的佈局?
- 20. 如何使用造紙寶石將縱橫比設置爲無限制比例?
- 21. 在android中設置佈局
- 22. 如何爲縱向和橫向佈局創建UIView
- 23. android多屏支持設置方向和縱橫比
- 24. android - 如何在Android 3.0中設置PreferenceActivity的自定義佈局?
- 25. 如何將screenOrientation設置爲清單中的橫向時,在對話框活動中使用縱向佈局?
- 26. 在android佈局中固定頁腳
- 27. 爲縱向和橫向定義了不同的佈局?
- 28. 如何使用vba將Powerpoint 2007中的圖像縱橫比設置爲100%?
- 29. Android的佈局固定
- 30. 在OpenGL(-ES)中設置縱橫比,得到奇怪的值
使用wrap_content。它採用與視圖相同的寬度和長度。 –
可能的重複[填充剩餘空間與固定長寬比surfaceview](http://stackoverflow.com/questions/10510371/fill-remaining-space-with-fixed-aspect-ratio-surfaceview) – Tim
我掙扎着這與我自己一會兒,最終我決定我必須重寫我想以編程方式約束和設置尺寸的視圖的onMeasure。查看鏈接的副本。 – Tim