Wie entferne ich die "separator-lines" zwischen TextViews?

  • Antworten:17
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 20

13.02.2016, 19:57:12 via Website

Hallo,

ich habe ein Problem mit meiner App. Wie man im Screenshot sieht, sind da zwischen den Karten diese Linien. Die stören mich und sollen weg, aber ich habe keine Ahnung, wie ich das machen soll.

Was sehr komisch ist, die sind auch noch da, wenn ich alle TextViews aus dem Layout lösche...

Ich hoffe, jemand von euch kann mir einen Rat geben, wie ich das am schlauesten anstellen kann.

image

Layout der Datei:

<?xml version="1.0" encoding="utf-8"?>

xmlns:android="links sind hier nicht erlaubt"
xmlns:tools="links sind hier nicht erlaubt"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dip"
tools:context="geändert"
android:weightSum="1"
android:orientation="vertical"
xmlns:card_view="links sind hier nicht erlaubt">

<android.support.v7.widget.CardView

    xmlns:card_view="links sind hier nicht erlaubt"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/news_card_view"
    android:layout_margin="3dp"
    >

    <LinearLayout

        xmlns:android="links sind hier nicht erlaubt"
        xmlns:tools="links sind hier nicht erlaubt"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="5dip"
        tools:context="geändert"
        android:weightSum="1"
        android:orientation="vertical"

        >


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:id="@+id/tvFeedItemHeader"
            />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:id="@+id/tvFeedItemDescription"
            />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:id="@+id/tvFeedItemDate"
            />

    </LinearLayout>

</android.support.v7.widget.CardView>

`

Antworten
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 7.166

13.02.2016, 22:50:48 via Website

Hallo Tom2000,

hast Du so etwas in deinem Code? Dann entfernen

    RecyclerView.ItemDecoration itemDecoration = new DividerItemDecoration(this, LinearLayoutManager.VERTICAL);
    mRecyclerView.addItemDecoration(itemDecoration);

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung App-Thread

Download Samsung Firmware Tool

Antworten
  • Forum-Beiträge: 20

14.02.2016, 09:03:11 via Website

Ludy

Hallo Tom2000,

hast Du so etwas in deinem Code? Dann entfernen

    RecyclerView.ItemDecoration itemDecoration = new DividerItemDecoration(this, LinearLayoutManager.VERTICAL);
    mRecyclerView.addItemDecoration(itemDecoration);

Hallo Ludy,

ich habe mal allen Code durchsucht und nichts gefunden...

LG,

Tom

PS: Habe alle Java-Dateien durchsucht, nicht nur die MainActivity

Antworten
  • Forum-Beiträge: 20

14.02.2016, 09:42:57 via Website

Das ist der Code vom Adapter:

public class FeedItemListAdapter extends BaseAdapter {

private Context mContext;
private List<RSSItem> mItems;

public FeedItemListAdapter(Context c, List<RSSItem> items) {
    mContext = c;
    mItems = items;
}

@Override
public int getCount() {
    return mItems.size();
}

@Override
public Object getItem(int position) {
    return mItems.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    RSSItem rssItem = mItems.get(position);

    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.fragment_news, parent, false);

    if(view == null) return null;

    TextView tvFeedItemHeader = (TextView) view.findViewById(R.id.tvFeedItemHeader);
    TextView tvFeedItemDescription = (TextView) view.findViewById(R.id.tvFeedItemDescription);
    TextView tvFeedItemDate = (TextView) view.findViewById(R.id.tvFeedItemDate);

    if(tvFeedItemHeader != null)
        tvFeedItemHeader.setText(rssItem.getTitle());

    if(tvFeedItemDescription != null)
        tvFeedItemDescription.setText(rssItem.getDescription());

    if(tvFeedItemDate != null)
        tvFeedItemDate.setText(rssItem.getDate());

    return view;
}

}

In der NewsFragment.java wird dann der RSS-Feed geladen.

LG,

Tom

Antworten
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 7.166

14.02.2016, 10:34:17 via Website

Hallo,

ich meinter so etwas :-)

    RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
    mRecyclerView.setHasFixedSize(true);
    LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
    mRecyclerView.setLayoutManager(mLayoutManager);

Der Adapter ist was das "mit" was ;-)

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung App-Thread

Download Samsung Firmware Tool

Tom2000

Antworten
  • Forum-Beiträge: 20

14.02.2016, 10:58:56 via Website

Ludy

Hallo,

ich meinter so etwas :-)

    RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
    mRecyclerView.setHasFixedSize(true);
    LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
    mRecyclerView.setLayoutManager(mLayoutManager);

Der Adapter ist was das "mit" was ;-)

Hi,

tut mir leid aber irgendwie verstehe ich nicht ganz, was du mir damit sagen willst :-D

Antworten
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 7.166

14.02.2016, 11:39:40 via Website

Hallo,

ich glaube wir haben von zwei verschiedenen Dingen geredet, kann es sein das Du den CardView in eine ListView ladest? Wenn ja in der XML im ListView

 android:dividerHeight="0dp"
 android:divider="@null"

oder in der Activity

 getListView().setDividerHeight(0);
 getListView().setDivider(null);

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung App-Thread

Download Samsung Firmware Tool

Antworten
  • Forum-Beiträge: 20

14.02.2016, 11:43:16 via Website

Ich habe ja oben mein Layout von der betreffenden Datei gepostet, das FrameLayout enthält das CardView. Im CardView ist ein LinearLayout, was die 3 TextViews beinhaltet und die schön untereinander anordnet.

Gruss,

Tom

Antworten
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 7.166

14.02.2016, 11:51:43 via App

Wie du richtig erkannt hast, ist das ein Fragment des ganzen. Du ladest die aber noch in ein über geordnet Layout - eine Liste - sonst bekommst du keine drei CardViews angezeigt.

Wie sieht denn dein Eltern Layout aus?

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung App-Thread

Download Samsung Firmware Tool

Pascal P.

Antworten
  • Forum-Beiträge: 20

14.02.2016, 11:54:31 via Website

<?xml version="1.0" encoding="utf-8"?>

xmlns:android="weg"
xmlns:app="weg"
xmlns:tools="weg"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="weg">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>


<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginTop="55dp">
</FrameLayout>

</RelativeLayout>

In das Layout werden alle Fragments reingeladen.

Brauchst du noch andere Layouts?

Antworten
  • Forum-Beiträge: 20

14.02.2016, 12:09:05 via Website

Nein, die anderen Layouts (unter anderem vom NavigationDrawer) verwenden LinearLayouts oder welche aus der Support-Library.

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.174

14.02.2016, 12:26:05 via Website

Hallo Tom2000,

Das mit dem Navigation Drawer ist klar, aber tut nichts zur Sache.
Du brauchst ja eine ListView/RecyclerView zum anzeigen mehrerer CardViews untereinander.

Der Seperator den du meinst, befindet sich unter einer CardView der "CardViewListe", also liegt das Problem nicht an dem CardView Layout sondern eine Ebene höher, bei der List-/RecyclerView.
Vielleicht zeigst du mal den Code deiner "CardViewActivity" dann wird es vielleicht einfacher das ganze zu erklären.

LG

LG Pascal //It's not a bug, it's a feature. :) ;)

Ludy

Antworten
  • Forum-Beiträge: 20

14.02.2016, 13:07:07 via Website

Okay, der ist vom Fragment:
public class NewsFragment extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
loadFeed("Link zur xml");
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
RSSItem item = (RSSItem) this.getListAdapter().getItem(position);
if(item.getLink() != null) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(item.getLink().toString()));
startActivity(i);
} else {
Toast.makeText(getActivity(), "Kein Link angegeben", Toast.LENGTH_SHORT).show();
}
}
public void loadFeed(String url) {
final ProgressDialog dlg = new ProgressDialog(getActivity());
dlg.setMessage("Lade Feed...");
SimpleRss2Parser parser = new SimpleRss2Parser(url, new SimpleRss2ParserCallback() {
@Override
public void onFeedParsed(List rssItems) {
// RSS-Elemente der Liste zuweisen
NewsFragment.this.setListAdapter(new FeedItemListAdapter(getActivity(), rssItems));
// Ladedialog ausblenden
dlg.dismiss();
}
@Override
public void onError(Exception e) {
Toast.makeText(getActivity(), "Fehler beim Laden des Feeds aufgetreten: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
});
// Ladedialog anzeigen
// dlg.show();
// Laden des Feeds starten
parser.parseAsync();
}
}
Der Code vom Adapter steht oben schon.
LG,
Tom

Edit by Mod Pascal: Unnötiges Vollzitat entfernt

— geändert am 14.02.2016, 13:22:40 durch Moderator

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.174

14.02.2016, 13:16:53 via Website

Gut, damit sind wir doch schon ein Stück weiter :)

Somit beziehst du deine ListView aus einem ListFragment.
Damit ist klar, die ListView aus dem Fragment ist an diesem "schlamassel" Schuld.

Um das zu beheben musst du erstmal auf die Instanz der ListView zugreifen und dann den Divider auf NULL setzen.

Also sowas extra ins Fragment:

  @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            ListView list = getListView();
            list.setDivider(null); //Trennlinie entfernen
            //Hier könntest du dann auch noch andere Einstellungen vornehmen, bisher aber nicht von nöten.
        }

— geändert am 14.02.2016, 13:17:20

LG Pascal //It's not a bug, it's a feature. :) ;)

LudyTom2000

Antworten
  • Forum-Beiträge: 20

14.02.2016, 13:20:23 via Website

Hi Pascal,
super, vielen vielen Dank! Hat geklappt :-)
Muss ich hier noch den Thread auf "gelöst" oder so setzen?
LG und Danke,
Tom

Edit by Mod Pascal: Unnötiges Vollzitat entfernt

— geändert am 14.02.2016, 13:22:14 durch Moderator

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.174

14.02.2016, 13:21:43 via Website

Toll das es geklappt hat :)
Bitte setze den Thread noch auf beantwortet, indem du über deinem ersten Post auf "Mehr"->Beantwortet klickst.
Danke

LG Pascal //It's not a bug, it's a feature. :) ;)

Tom2000

Antworten

Empfohlene Artikel