2017-07-31 4 views
1

私はKotlinのbigginerです。私はこの言語であまりfamilierではありません。私は一例を作り、コードで遊んでいます。私はちょうど任意のビューにランタイムマージンを設定したい。 Googleにしようとしているが、このタスクのための適切な解決策を得ていない。 その他のコード詳細については、以下を参照してください。任意のビューへKotlinを使用して任意のビューにランタイムマージンを設定する

要件

設定ランタイムMargine。

説明

私はボタンの上に含まれている1つのXMLファイルを取っていると私は、このボタンにランタイムmargineを設定します。

コード

私も事の下にしようとしたが、それは動作していません。

class MainActivity : AppCompatActivity() { 


//private lateinit var btnClickMe: Button 
//var btnClickMe=Button(); 

    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     setContentView(R.layout.activity_main) 
     //For setting runtime text to any view. 
     btnClickMe.text = "Chirag" 

     //For getting runtime text to any view 
     var str: String = btnClickMe.text as String; 

     //For setting runtimer drawable 
     btnClickMe.background=ContextCompat.getDrawable(this,R.drawable.abc_ab_share_pack_mtrl_alpha)//this.getDrawable(R.drawable.abc_ab_share_pack_mtrl_alpha) 


     /* 
     //For Setting Runtime Margine to any view. 
     var param:GridLayout.LayoutParams 
     param.setMargins(10,10,10,10); 

     btnClickMe.left=10; 
     btnClickMe.right=10; 
     btnClickMe.top=10; 
     btnClickMe.bottom=10; 
     */ 

     // Set OnClick Listener. 
     btnClickMe.setOnClickListener { 
      Toast.makeText(this,str,5000).show(); 
     } 

    } 

}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:orientation="vertical" 
tools:context="chirag.iblazing.com.stackoverflowapp.MainActivity" 
android:layout_height="match_parent"> 

<Button 
    android:id="@+id/btnClickMe" 
    android:text="Click Me" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

私はあなたのすべてが私のproblem.Pleaseでクリアされている願っていますいずれかがこの問題の解決策を持っている場合は、私を助けて。あなたが私の問題についての詳しい情報を知りたいのなら教えてください。

ありがとうございました。

+0

activity_main.xmlを投稿できますか? – chandil03

+0

Update @ chandil03を確認してください これもLinearLayoutParamでこれを試してみますが、動作しません。 –

+0

コメント欄でわかるように、これはLayoutParamsを使うべき方法ではありません。答えをチェック。 – chandil03

答えて

4

ボタンからlayoutParamsオブジェクトを取得し、btnClickMeの親がLinearLayoutであるため、それをLinearLayout.LayoutParamsにキャストし、余白を任意に設定する必要があります。次のコード

チェック:

val param = btnClickMe.layoutParams as LinearLayout.LayoutParams 
param.setMargins(10,10,10,10); 
btnClickMe.layoutParams = param // Tested!! - You need this line for the params to be applied. 

はそれがお役に立てば幸いです。

+0

Wooow これはうまくいきます。兄さんありがとうございます。 –

関連する問題