私はGuideLine
、ページの左側に15%オフしています。ガイドラインパーセントサイズをプログラムで取得する
私はこのコードでは、それの割合を取得することができます:
float percent = ((ConstraintLayout.LayoutParams) guideline.getLayoutParams()).guidePercent;
出力:0.15
どのように私は、ピクセルまたはdpiの値を得ることができますか?
私はGuideLine
、ページの左側に15%オフしています。ガイドラインパーセントサイズをプログラムで取得する
私はこのコードでは、それの割合を取得することができます:
float percent = ((ConstraintLayout.LayoutParams) guideline.getLayoutParams()).guidePercent;
出力:0.15
どのように私は、ピクセルまたはdpiの値を得ることができますか?
ConstraintLayout
が既に配置されていると仮定すると、横方向のガイドラインはguideline.getTop()
、縦方向のガイドラインはguideline.getLeft()
を使用して、ピクセルの左または右の距離を取得できます。
ConstraintLayout
がまだレイアウトされない(あなたが活動のonCreate()
であると言う)を持っている場合、あなたはそれがレイアウトされるまで待たなければならない:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ConstraintLayout constraintLayout = (ConstraintLayout) findViewById(R.id.constraint);
constraintLayout.post(new Runnable() {
@Override
public void run() {
Guideline guideline = findViewById(R.id.guideline);
Log.i(TAG, guideline.getLeft() + "");
}
});
}
注、getLeft()
/getTop()
ことピクセル単位でサイズが返されます。このサイズは、Guideline
とその親 - ConstraintLayout
の間の距離を示します。つまり、値は絶対ではなく、親に対して相対的です。
あなたは絶対値を取得したい場合は、あなたがView#getLocationOnScreen(int[])
APIを利用する必要がある(あなたのConstraintLayout
が深くビュー階層内にネストされ、そしてあなたは、画面の左からGuideline
どれだけ離れているかを理解したいと言う):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ConstraintLayout constraintLayout = (ConstraintLayout) findViewById(R.id.constraint);
constraintLayout.post(new Runnable() {
@Override
public void run() {
Guideline guideline = findViewById(R.id.guideline);
int[] location = new int[2];
guideline.getLocationOnScreen(location);
Log.i(TAG, location[0] + " " + location[1]);
}
});
}
電話dpが複数のscreen.butのために変わっているので、私はdpでその値を得るための単純なロジックを持っているので、dpの式に直接変換率はありません。レイアウト幅の
1)スクリーン幅(500dp)
2を計算して)あなたのマージン(15%の割合を計算)
float dpvalue=totalwidth * percentage
//500 *(0.15) =75(dpvalue)
このロジックは、すべてのデバイスのサイズを動作します。