web-dev-qa-db-ja.com

プログラムでビューにパディングを追加する

Android v2.2アプリを開発中です。

フラグメントがあります。

私のフラグメントクラスのonCreateView(...)コールバックで、以下のようにフラグメントにレイアウトを拡張します。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.login, null);

    return view;
}

上記のレイアウトファイルは(login.xml)です。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:orientation="vertical" 
 >

    <TextView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="Username" />


    <TextView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="Username" />

</LinearLayout>

paddingTopを上記の<LinearLayout>エレメントに設定したいのですが、それをxmlではなくJavaコードで行いたいと思います。

フラグメントJavaクラスコードでpaddingTop<LinearLayout>に設定する方法

208
Leem.fin

view.setPadding(0,padding,0,0);

これは上部のパディングをpadding- pixelsに設定します。

代わりにdpに設定したい場合は、 変換を行うことができます

float scale = getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (sizeInDp*scale + 0.5f);
448
Jave

あなたの2番目の質問に答えるには:

view.setPadding(0,padding,0,0);

spKやJaveが提案したように、パディングをピクセル単位で設定します。次のようにdp値を計算して、dpに設定できます。

int paddingDp = 25;
float density = context.getResources().getDisplayMetrics().density
int paddingPixel = (int)(paddingDp * density);
view.setPadding(0,paddingPixel,0,0);

それが役立つことを願っています!

87
Chris Conway

パディングをリソースファイルに格納している場合は、単に呼び出すことができます。

int padding = getResources().getDimensionPixelOffset(R.dimen.padding);

それはあなたのために変換を行います。

83
Miklos Jakab

以下のコードを通して文法的にプログラムでパディングをビューに設定できます -

view.setPadding(0,1,20,3);

そして、利用可能なさまざまな種類のパディングもあります -

パディング

PaddingBottom

PaddingLeft

PaddingRight

PaddingTop

これらのリンクはAndroid Developersサイトを参照します。これがあなたにとって大いに役立つことを願っています。

13
Praveenkumar

TypedValueを使うことは手動で計算することと比較してピクセルに変換するためのずっときれいな方法です:

float paddingDp = 10f;
// Convert to pixels
int paddingPx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, paddingDp, context.getResources().getDisplayMetrics());
view.setPadding(paddingPx, paddingPx, paddingPx, paddingPx);

基本的に、TypedValue.applyDimensionは現在のデバイスのディスプレイプロパティに応じて適切なパディングを適切にピクセルに変換します。

詳しくは、 TypedValue.applyDimension Docs を参照してください。

8
i2097i

KotlinとAndroid-ktxライブラリを使うと、簡単にできます。

view.updatePadding(top = 42)

こちらのドキュメントを参照してください

5
Andrew Orobator

パディングを動的に設定するには、以下の方法を使用してください。

setPadding(int left, int top, int right, int bottom)

例:

view.setPadding(2,2,2,2);
5
saigopi

以下のコードを書いてパディングを設定してください。

TextView ApplyPaddingTextView = (TextView)findViewById(R.id.textView1);
final LayoutParams layoutparams = (RelativeLayout.LayoutParams) ApplyPaddingTextView.getLayoutParams();

layoutparams.setPadding(50,50,50,50);

ApplyPaddingTextView.setLayoutParams(layoutparams);

子ビューの親レイアウトに応じてLinearLayout.LayoutParamsまたはRelativeLayout.LayoutParamsを使用

2
Manikandan K

プログラム的にパディングしながら、pixelをDpに変換して密度関連の値に変換します。

0
Bhagya
Context contect=MainActivity.this;
TextView tview=new TextView(context);
tview.setPaddingRelative(10,0,0,0);
0