2013-10-25 43 views
0

我是新来的android开发,我很困扰的东西。Android动态用户界面

我想先创建一个用户界面,我有一个关于添加动态字段的问题。我已经在使用XML来设置我的界面,但我不知道如何继续。

例如,用户可以选择1 2 3或4并根据选择我希望对话框显示EditText的数量。同样的事情稍后会适用。表格会显示标题上的文字浏览数量。

有没有办法通过使用一些XML和一些Java来做到这一点?因为我相信只使用java,对不同的事物进行样式设计将是一件痛苦的事情。

如果您需要更多信息,请让我知道。

在此先感谢

+0

你可以把所有的在Java中的附件/循环逻辑,但只是膨胀现有的XML资源 - 所以不需要在Java层中的样式等。 –

回答

0

你应该检出View的visibility属性。

如果您有一组固定的UI元素(例如5个按钮),您可以将它们包含在布局中,并在以后用setVisibility(View.Visible)显示它们。然而,如果你有一个动态数量的元素(用户可以从1到n个按钮中选择),那么你将不得不在Java中实现它。您仍然可以使用XML布局来完成部分工作,但大部分内容都需要手动完成。

0

我写了一个示例代码,看看它可以帮助你

public class ActivityMain extends Activity { 

    LinearLayout main; 
    private int id = 0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.test); 

     main = (LinearLayout) findViewById(R.id.parent); 
     main.setOrientation(LinearLayout.VERTICAL); 

     final EditText editText = (EditText) findViewById(R.id.et_count); 

     Button button = (Button) findViewById(R.id.btn); 

     button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       final int count = Integer.parseInt(editText.getText() 
         .toString()); 
       addEditText(count); 
      } 
     }); 

    } 

    private void addEditText(int count) { 

     for (int i = 0; i < count; i++) { 

      LinearLayout editTextLayout = new LinearLayout(this); 
      editTextLayout.setOrientation(LinearLayout.VERTICAL); 
      main.addView(editTextLayout); 

      EditText editText1 = new EditText(this); 
      editText1.setId(id++); 
      editTextLayout.addView(editText1); 

     } 
    } 
} 

和布局的test.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/parent" 
    android:padding="10dp" > 

    <EditText 
     android:id="@+id/et_count" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:id="@+id/btn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Submit" /> 

</LinearLayout> 

增添风采

editTextLayout.setTextAppearance(getApplicationContext(), R.style.boldText); 
+0

谢谢你们。 Brontok,我了解你的代码。我仍然无法理解的是在我们使用ur方法添加所有这些edittext之后,我们如何使用预定义的XML对它们进行样式化? – user2919616

+0

检查更新的答案以在运行时添加样式。 –