2016-11-11 3 views
1

Я макет, который добавляет TextView «S в цикле динамически:Программным нарисовать линию под TextView

TextView msg = new TextView(this); 
TextView Bmsg = new TextView(this); 
msg.setText(splittedItem[0]); 
msg.setTextColor(0xFF2C85A6); 
msg.setTextSize(22); 
msg.setPadding(10, 10, 0, 10); 
Bmsg.setText("- "+splittedItem[1]); 
Bmsg.setPadding(20, 0, 10, 30); 
Bmsg.setTextSize(18); 
linearLayout.addView(msg); 
linearLayout.addView(Bmsg); 

И я хочу, чтобы разделить каждую TextView с линией, как это:

Мне нужна строка под Bmsg. Я нашел это - draw line under TextView on Android, но я не понимаю, как это сделать программно.

в XML:

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/buttonlayout"> 
</LinearLayout> 

ответ

1

использования этого и дайте мне знать, если он работает

View view = new View(this); 
view.setLayoutParams(new LinearLayout.LayoutParams(
    LayoutParams.MATCH_PARENT,2 
)); 
view.setBackgroundColor(Color.parseColor("#000000")); 

linearlayout.addView(view); 
+0

Но вы должны учитывать плотность пикселей, а не использовать '2', поскольку это может не всегда давать одинаковые результаты. –

+0

Да, это работает! Tnx –

0

Вы можете добавить это в список стилей:

<style name="DividerHorizontal"> 
     <item name="android:layout_width">match_parent</item> 
     <item name="android:layout_height">1dp</item> 
     <item name="android:background">?android:attr/listDivider</item> 
    </style> 

    <style name="DividerVertical"> 
     <item name="android:layout_width">1dp</item> 
     <item name="android:layout_height">match_parent</item> 
     <item name="android:background">?android:attr/listDivider</item> 
    </style> 

После того, как вы сделаете это, вы можете назвать его с видом, как это:

<View style="@style/DividerHorizontal" 
     android:layout_alignParentTop="true" 
     android:id="@+id/topDivider" /> 

EDIT:

Поскольку вы, кажется, хотят, чтобы сделать список, просто использовать ListView и сделать что-то подобное или использовать это в коде:

mListView = getListView(); 
    mAdapter = new ServersListAdapter(this, new String[] {}, 
      new String[] {}, new String[] {}); 
    int[] colors = { Color.parseColor("#D3D3D3"), Color.parseColor("#D3D3D3"), Color.parseColor("#D3D3D3") }; 
    mListView.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors)); 
+0

У меня все работает, поэтому ваш вариант я не понимаю, как использовать в моем коде –

0

Я предлагаю использовать RecyclerView для отображения вашего TextViews, это может дать вам лучшую гибкость и в зависимости от того, что вы делаете, и повысить производительность.

Вы можете использовать RecyclerView.ItemDecoration, чтобы сделать перегородки (и другие вещи).