2017-11-28 26 views
0

私は、アクティビティ内の動的に追加されたボタンにスタイルを設定しようとしていますが、ボタンはまだデフォルトのスタイルになっています。動的に追加されたボタンのスタイルを設定する

:ここ

私の活動

package com.sample.Learn_German_Quiz; 

import android.content.Context; 
import android.content.Intent; 
import android.graphics.Color; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v4.view.ViewPropertyAnimatorCompat; 
import android.view.ContextThemeWrapper; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 
import android.widget.Toast; 

import static android.R.interpolator.linear; 


public class LessonChooserActivity extends AppCompatActivity { 

    private GrammarBank grammarBank = new GrammarBank(); 

    public String getSelectedLesson() { 
     return selectedLesson; 
    } 

    public void setSelectedLesson(String selectedLesson) { 
     this.selectedLesson = selectedLesson; 
    } 

    private String selectedLesson; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_lesson_chooser); 
     grammarBank.initLessons(getApplicationContext()); 
     setupButton(); 


    } 


    private void setupButton() { 


     Context newContext = new ContextThemeWrapper(getBaseContext(), R.style.button_learn); 

     for (int i = 0; i <= 5; i++) { 
      LinearLayout layout = (LinearLayout) findViewById(R.id.linearTest); 
      layout.setOrientation(LinearLayout.VERTICAL); 

      Button btn = new Button(newContext); 
      //Button btn = new Button(this); 
      btn.setText(grammarBank.getLessonTitle(i)); 
      layout.addView(btn); 
     } 


    } 


} 

活動のためのレイアウトファイル

<LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:padding="@dimen/fab_margin" 
     android:id="@+id/linearTest"> 

    <Button 
     style="@style/button_learn" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/ButtonTest" 
     android:ems="10" 
     android:text="Test" 
     android:textColor="#ffff" 
     android:padding="16dp" 
     android:onClick="onClick" 

     /> 

    </LinearLayout> 

スタイル私は私のボタンに与えたいです

<style name="button_learn" parent="Theme.AppCompat.DayNight.NoActionBar"> 
     <item name="android:background">@drawable/button_rounded</item> 
     <item name="android:layout_margin">20dp</item> 
    </style> 

button_rounded.xmlファイル

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape android:shape="rectangle"> 
     <corners android:radius="50dp"></corners> 
     <solid android:color="#4F535F"></solid> 

    </shape> 

</item> 


</selector> 

彼らは次のように表示されています

enter image description here

と私は、このようにそれらをしたい:

enter image description here

答えて

1

がこの1

LinearLayout layout = (LinearLayout) findViewById(R.id.linearTest); 
layout.setOrientation(LinearLayout.VERTICAL); 

for (int i = 0; i <= 5; i++) { 
     Button btn= new Button(this, null,R.style.button_learn); 
     btn.setText(grammarBank.getLessonTitle(i)); 
     layout.addView(btn); 
    } 
+0

他の人を助けてくれるように、私が探していたことがまさに嬉しいです。ボタン**ボタン**ボタン** btn ** :) –

1

を試してみてくださいあなたもdefStyleAttrをint型取り、別のButton constructorを使用してみましたか? R.style.button_learnをdefStyleAttrとして渡すとうまくいくはずです。

+0

ありがとうございました!私はあなたの答えを** Mubashar Javed **と結びつけて、それを働かせました:) –

関連する問題